Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ab94b235 authored by Ian Coolidge's avatar Ian Coolidge
Browse files

Fix pthread_t confusion.

Don't assign pthread_t to pid_t or UINT32.
Just use pthread_t throughout.

(cherry picked from commit c724bca3)

Change-Id: I1ab086a547a731358003471be867cfb189f61c56
parent 84edb622
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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;
+16 −18
Original line number Diff line number Diff line
@@ -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,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;
}

@@ -622,4 +621,3 @@ static void *sock_poll_thread(void *arg)
    APPL_TRACE_DEBUG("socket poll thread exiting, h:%d", h);
    return 0;
}