Merge "minadbd: switch adb_thread_create to std::thread."
am: d3d91e5595
Change-Id: If7c9c8cf8d2d8c93c521d3426c55be9068c817cc
This commit is contained in:
@@ -21,25 +21,13 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
#include "adb.h"
|
#include "adb.h"
|
||||||
#include "fdevent.h"
|
#include "fdevent.h"
|
||||||
#include "fuse_adb_provider.h"
|
#include "fuse_adb_provider.h"
|
||||||
#include "sysdeps.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) {
|
static void sideload_host_service(int sfd, void* data) {
|
||||||
char* args = reinterpret_cast<char*>(data);
|
char* args = reinterpret_cast<char*>(data);
|
||||||
int file_size;
|
int file_size;
|
||||||
@@ -66,19 +54,7 @@ static int create_service_thread(void (*func)(int, void *), void *cookie) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
stinfo* sti = static_cast<stinfo*>(malloc(sizeof(stinfo)));
|
std::thread([s, func, cookie]() { func(s[1], cookie); }).detach();
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
VLOG(SERVICES) << "service thread started, " << s[0] << ":" << s[1];
|
VLOG(SERVICES) << "service thread started, " << s[0] << ":" << s[1];
|
||||||
return s[0];
|
return s[0];
|
||||||
|
|||||||
Reference in New Issue
Block a user