summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--minadbd/minadbd_services.cpp30
-rw-r--r--mounts.cpp17
-rw-r--r--mounts.h4
3 files changed, 3 insertions, 48 deletions
diff --git a/minadbd/minadbd_services.cpp b/minadbd/minadbd_services.cpp
index 426d982eb..a6aa321ca 100644
--- a/minadbd/minadbd_services.cpp
+++ b/minadbd/minadbd_services.cpp
@@ -21,25 +21,13 @@
#include <string.h>
#include <unistd.h>
+#include <thread>
+
#include "adb.h"
#include "fdevent.h"
#include "fuse_adb_provider.h"
#include "sysdeps.h"
-typedef struct stinfo stinfo;
-
-struct stinfo {
- void (*func)(int fd, void *cookie);
- int fd;
- void *cookie;
-};
-
-void service_bootstrap_func(void* x) {
- stinfo* sti = reinterpret_cast<stinfo*>(x);
- sti->func(sti->fd, sti->cookie);
- free(sti);
-}
-
static void sideload_host_service(int sfd, void* data) {
char* args = reinterpret_cast<char*>(data);
int file_size;
@@ -66,19 +54,7 @@ static int create_service_thread(void (*func)(int, void *), void *cookie) {
return -1;
}
- stinfo* sti = static_cast<stinfo*>(malloc(sizeof(stinfo)));
- if(sti == 0) fatal("cannot allocate stinfo");
- sti->func = func;
- sti->cookie = cookie;
- sti->fd = s[1];
-
- if (!adb_thread_create(service_bootstrap_func, sti)) {
- free(sti);
- adb_close(s[0]);
- adb_close(s[1]);
- printf("cannot create service thread\n");
- return -1;
- }
+ std::thread([s, func, cookie]() { func(s[1], cookie); }).detach();
VLOG(SERVICES) << "service thread started, " << s[0] << ":" << s[1];
return s[0];
diff --git a/mounts.cpp b/mounts.cpp
index fbcbac014..76fa65739 100644
--- a/mounts.cpp
+++ b/mounts.cpp
@@ -62,13 +62,6 @@ bool scan_mounted_volumes() {
return true;
}
-MountedVolume* find_mounted_volume_by_device(const char* device) {
- for (size_t i = 0; i < g_mounts_state.size(); ++i) {
- if (g_mounts_state[i]->device == device) return g_mounts_state[i];
- }
- return nullptr;
-}
-
MountedVolume* find_mounted_volume_by_mount_point(const char* mount_point) {
for (size_t i = 0; i < g_mounts_state.size(); ++i) {
if (g_mounts_state[i]->mount_point == mount_point) return g_mounts_state[i];
@@ -87,13 +80,3 @@ int unmount_mounted_volume(MountedVolume* volume) {
}
return result;
}
-
-int remount_read_only(MountedVolume* volume) {
- int result = mount(volume->device.c_str(), volume->mount_point.c_str(),
- volume->filesystem.c_str(),
- MS_NOATIME | MS_NODEV | MS_NODIRATIME | MS_RDONLY | MS_REMOUNT, 0);
- if (result == -1) {
- PLOG(WARNING) << "Failed to remount read-only " << volume->mount_point;
- }
- return result;
-}
diff --git a/mounts.h b/mounts.h
index 1b7670329..0de1ebd0a 100644
--- a/mounts.h
+++ b/mounts.h
@@ -21,12 +21,8 @@ struct MountedVolume;
bool scan_mounted_volumes();
-MountedVolume* find_mounted_volume_by_device(const char* device);
-
MountedVolume* find_mounted_volume_by_mount_point(const char* mount_point);
int unmount_mounted_volume(MountedVolume* volume);
-int remount_read_only(MountedVolume* volume);
-
#endif