Skip to content
Snippets Groups Projects
Commit b4f404bf authored by Ian Coolidge's avatar Ian Coolidge Committed by Android Partner Code Review
Browse files

Merge "Fix pthread_t confusion." into m-wireless-dev

parents 56b8988c ab94b235
No related branches found
No related tags found
No related merge requests found
......@@ -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"
......@@ -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;
......
......@@ -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;
......@@ -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()
{
......@@ -234,17 +231,19 @@ 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)
{
APPL_TRACE_DEBUG("h:%d, thread id:%d", h, ts[h].thread_id);
ts[h].callback = callback;
ts[h].cmd_callback = cmd_callback;
}
else
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);
h = -1;
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;
}
return h;
}
......@@ -622,4 +621,3 @@ static void *sock_poll_thread(void *arg)
APPL_TRACE_DEBUG("socket poll thread exiting, h:%d", h);
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment