diff options
-rw-r--r-- | minadbd/minadbd_services.cpp | 30 | ||||
-rw-r--r-- | mounts.cpp | 17 | ||||
-rw-r--r-- | mounts.h | 4 |
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; -} @@ -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 |