Loading system/btif/include/btif_hh.h +2 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <hardware/bluetooth.h> #include <hardware/bt_hh.h> #include <pthread.h> #include <stdint.h> #include "bta_hh_api.h" #include "btu.h" Loading Loading @@ -63,7 +64,7 @@ typedef struct UINT8 sub_class; UINT8 app_id; int fd; UINT32 hh_poll_thread_id; pthread_t hh_poll_thread_id; UINT8 hh_keep_polling; BOOLEAN vup_timer_active; TIMER_LIST_ENT vup_timer; Loading system/btif/src/btif_sock_thread.c +16 −18 Original line number Diff line number Diff line Loading @@ -95,7 +95,7 @@ typedef struct { int poll_count; poll_slot_t ps[MAX_POLL]; int psi[MAX_POLL]; //index of poll slot volatile pid_t thread_id; volatile pthread_t thread_id; btsock_signaled_cb callback; btsock_cmd_cb cmd_callback; int used; Loading Loading @@ -164,19 +164,16 @@ static inline int accept_server_socket(int s) APPL_TRACE_DEBUG("accepted fd:%d for server fd:%d", fd, s); return fd; } static inline pthread_t create_thread(void *(*start_routine)(void *), void * arg) static inline int create_thread(void *(*start_routine)(void *), void * arg, pthread_t * thread_id) { pthread_attr_t thread_attr; pthread_attr_init(&thread_attr); pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_JOINABLE); pthread_t thread_id = -1; if( pthread_create(&thread_id, &thread_attr, start_routine, arg)!=0 ) { APPL_TRACE_ERROR("pthread_create : %s", strerror(errno)); return -1; } return thread_id; return pthread_create(thread_id, &thread_attr, start_routine, arg); } static void init_poll(int cmd_fd); static int alloc_thread_slot() { Loading Loading @@ -234,18 +231,20 @@ int btsock_thread_create(btsock_signaled_cb callback, btsock_cmd_cb cmd_callback if(h >= 0) { init_poll(h); if((ts[h].thread_id = create_thread(sock_poll_thread, (void*)(uintptr_t)h)) != -1) pthread_t thread; int status = create_thread(sock_poll_thread, (void*)(uintptr_t)h, &thread); if (status) { APPL_TRACE_ERROR("create_thread failed: %s", strerror(status)); free_thread_slot(h); return -1; } ts[h].thread_id = thread; APPL_TRACE_DEBUG("h:%d, thread id:%d", h, ts[h].thread_id); ts[h].callback = callback; ts[h].cmd_callback = cmd_callback; } else { free_thread_slot(h); h = -1; } } return h; } Loading Loading @@ -622,4 +621,3 @@ static void *sock_poll_thread(void *arg) APPL_TRACE_DEBUG("socket poll thread exiting, h:%d", h); return 0; } Loading
system/btif/include/btif_hh.h +2 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <hardware/bluetooth.h> #include <hardware/bt_hh.h> #include <pthread.h> #include <stdint.h> #include "bta_hh_api.h" #include "btu.h" Loading Loading @@ -63,7 +64,7 @@ typedef struct UINT8 sub_class; UINT8 app_id; int fd; UINT32 hh_poll_thread_id; pthread_t hh_poll_thread_id; UINT8 hh_keep_polling; BOOLEAN vup_timer_active; TIMER_LIST_ENT vup_timer; Loading
system/btif/src/btif_sock_thread.c +16 −18 Original line number Diff line number Diff line Loading @@ -95,7 +95,7 @@ typedef struct { int poll_count; poll_slot_t ps[MAX_POLL]; int psi[MAX_POLL]; //index of poll slot volatile pid_t thread_id; volatile pthread_t thread_id; btsock_signaled_cb callback; btsock_cmd_cb cmd_callback; int used; Loading Loading @@ -164,19 +164,16 @@ static inline int accept_server_socket(int s) APPL_TRACE_DEBUG("accepted fd:%d for server fd:%d", fd, s); return fd; } static inline pthread_t create_thread(void *(*start_routine)(void *), void * arg) static inline int create_thread(void *(*start_routine)(void *), void * arg, pthread_t * thread_id) { pthread_attr_t thread_attr; pthread_attr_init(&thread_attr); pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_JOINABLE); pthread_t thread_id = -1; if( pthread_create(&thread_id, &thread_attr, start_routine, arg)!=0 ) { APPL_TRACE_ERROR("pthread_create : %s", strerror(errno)); return -1; } return thread_id; return pthread_create(thread_id, &thread_attr, start_routine, arg); } static void init_poll(int cmd_fd); static int alloc_thread_slot() { Loading Loading @@ -234,18 +231,20 @@ int btsock_thread_create(btsock_signaled_cb callback, btsock_cmd_cb cmd_callback if(h >= 0) { init_poll(h); if((ts[h].thread_id = create_thread(sock_poll_thread, (void*)(uintptr_t)h)) != -1) pthread_t thread; int status = create_thread(sock_poll_thread, (void*)(uintptr_t)h, &thread); if (status) { APPL_TRACE_ERROR("create_thread failed: %s", strerror(status)); free_thread_slot(h); return -1; } ts[h].thread_id = thread; APPL_TRACE_DEBUG("h:%d, thread id:%d", h, ts[h].thread_id); ts[h].callback = callback; ts[h].cmd_callback = cmd_callback; } else { free_thread_slot(h); h = -1; } } return h; } Loading Loading @@ -622,4 +621,3 @@ static void *sock_poll_thread(void *arg) APPL_TRACE_DEBUG("socket poll thread exiting, h:%d", h); return 0; }