本文介紹線程HAL相關(guān)的接口。

HAL_MutexCreate

  • 原型:
    void *HAL_MutexCreate(void);
  • 接口說明:調(diào)用此接口創(chuàng)建一個(gè)互斥量對(duì)象,返回指向所創(chuàng)建互斥量的指針,用于同步訪問,對(duì)于僅支持單線程應(yīng)用,可實(shí)現(xiàn)為空函數(shù)。
  • 參數(shù)說明:此接口無需入?yún)ⅰ?/li>
  • 返回結(jié)果說明:此接口無返回參數(shù)。

HAL_MutexDestroy

  • 原型:
    void HAL_MutexDestroy(_IN_ void *mutex);
  • 接口說明:調(diào)用此接口銷毀一個(gè)互斥量對(duì)象,用于釋放資源。
  • 參數(shù)說明:
    參數(shù) 數(shù)據(jù)類型 方向 說明
    mutex void * 輸入 互斥量指針。
  • 返回結(jié)果說明:此接口無返回參數(shù)。

HAL_MutexLock

  • 原型:
    void HAL_MutexLock(_IN_ void *mutex);      
  • 接口說明:調(diào)用此接口鎖住一個(gè)互斥量。
  • 參數(shù)說明:
    參數(shù) 數(shù)據(jù)類型 方向 說明
    mutex void * 輸入 互斥量指針。
  • 返回結(jié)果說明:此接口無返回參數(shù)。

HAL_MutexUnlock

  • 原型:
    void HAL_MutexUnlock(_IN_ void *mutex);     
  • 接口說明:調(diào)用此接口解鎖一個(gè)互斥量。
  • 參數(shù)說明:
    參數(shù) 數(shù)據(jù)類型 方向 說明
    mutex void * 輸入 互斥量指針。
  • 返回結(jié)果說明:此接口無返回參數(shù)。

HAL_SemaphoreCreate

  • 原型:
    void *HAL_SemaphoreCreate(void); 
  • 接口說明:調(diào)用此接口創(chuàng)建一個(gè)計(jì)數(shù)信號(hào)量。此接口實(shí)現(xiàn)必須為原子操作,對(duì)于僅支持單線程應(yīng)用,可實(shí)現(xiàn)為空函數(shù)。
  • 參數(shù)說明:此接口無需入?yún)ⅰ?/li>
  • 返回結(jié)果說明:
    返回結(jié)果 說明
    NULL 創(chuàng)建失敗。
    !NULL 創(chuàng)建成功,返回信號(hào)量句柄。

HAL_SemaphoreDestroy

  • 原型:
    void HAL_SemaphoreDestroy(_IN_ void *sem);
  • 接口說明:調(diào)用此接口銷毀一個(gè)由參數(shù)sem指定的信號(hào)量。此接口實(shí)現(xiàn)必須為原子操作。
  • 參數(shù)說明:
    參數(shù) 數(shù)據(jù)類型 方向 說明
    sem void * 輸入 信號(hào)量指針。
  • 返回結(jié)果說明:此接口無返回參數(shù)。

HAL_SemaphorePost

  • 原型:
    void HAL_SemaphorePost(_IN_ void *sem);
  • 接口說明:調(diào)用此接口在指定的計(jì)數(shù)信號(hào)量上做自增操作,解除其它線程的等待。此接口實(shí)現(xiàn)必須為原子操作,對(duì)于僅支持單線程應(yīng)用,可實(shí)現(xiàn)為空函數(shù)。
  • 參數(shù)說明:
    參數(shù) 數(shù)據(jù)類型 方向 說明
    sem void * 輸入 信號(hào)量句柄。
  • 返回結(jié)果說明:此接口無返回參數(shù)。

HAL_SemaphoreWait

  • 原型:
    int HAL_SemaphoreWait(_IN_ void *sem, _IN_ uint32_t timeout_ms);
  • 接口說明:調(diào)用此接口在指定的計(jì)數(shù)信號(hào)量上等待并做自減操作。對(duì)于僅支持單線程應(yīng)用,此接口實(shí)現(xiàn)必須為原子操作,可實(shí)現(xiàn)為空函數(shù)。
  • 參數(shù)說明:
    參數(shù) 數(shù)據(jù)類型 方向 說明
    sem void * 輸入 信號(hào)量句柄。
    timeout_ms uint32_t 輸入 信號(hào)量等待超時(shí)時(shí)間,單位ms。
    說明 如果設(shè)置了PLATFORM_WAIT_INFINITE參數(shù),則函數(shù)返回只能由獲取信號(hào)量觸發(fā),永不超時(shí)。
  • 返回結(jié)果說明:
    返回結(jié)果 說明
    0 函數(shù)返回是由信號(hào)量觸發(fā)。
    -1 函數(shù)返回是由超時(shí)觸發(fā)。

HAL_ThreadCreate

  • 原型:
    int HAL_ThreadCreate(
                _OU_ void **thread_handle,
                _IN_ void *(*work_routine)(void *),
                _IN_ void *arg,
                _IN_ hal_os_thread_param_t *hal_os_thread_param,
                _OU_ int *stack_used);
  • 接口說明:調(diào)用此接口指定入?yún)?chuàng)建一個(gè)線程。
  • 參數(shù)說明:
    參數(shù) 數(shù)據(jù)類型 方向 說明
    thread_handle void ** 輸出 指向線程句柄變量的指針。
    work_routine void *(*work_routine)(void *) 輸入 指向線程執(zhí)行函數(shù)的函數(shù)指針。
    arg void * 輸入 傳遞給運(yùn)行程序的單個(gè)參數(shù)。
    hal_os_thread_param hal_os_thread_param_t * 輸入 指向線程初始化參數(shù)的指針。
    stack_used int * 輸出 指示平臺(tái)是否使用棧緩沖區(qū):
    • 0:未使用
    • 1:使用
    線程初始化參數(shù)定義:
    typedef struct _hal_os_thread {
        hal_os_thread_priority_t priority;     /* initial thread priority */
        void                    *stack_addr;   /* thread stack address malloced by caller, use system stack by . */
        size_t                   stack_size;   /* stack size requirements in bytes; 0 is default stack size */
        int                      detach_state; /* 0: not detached state; otherwise: detached state. */
        char                    *name;         /* thread name. */
    } hal_os_thread_param_t;
    線程優(yōu)先級(jí)定義:
    typedef enum {
        os_thread_priority_idle = -3,        /* priority: idle (lowest) */
        os_thread_priority_low = -2,         /* priority: low */
        os_thread_priority_belowNormal = -1, /* priority: below normal */
        os_thread_priority_normal = 0,       /* priority: normal (default) */
        os_thread_priority_aboveNormal = 1,  /* priority: above normal */
        os_thread_priority_high = 2,         /* priority: high */
        os_thread_priority_realtime = 3,     /* priority: realtime (highest) */
        os_thread_priority_error = 0x84,     /* system cannot determine priority or thread has illegal priority */
    } hal_os_thread_priority_t;
  • 返回結(jié)果說明:
    返回結(jié)果 說明
    -1 創(chuàng)建失敗。
    0 創(chuàng)建成功。

HAL_ThreadDelete

  • 原型:
    void HAL_ThreadDelete(_IN_ void *thread_handle);
  • 接口說明:調(diào)用此接口刪除指定的線程。
  • 參數(shù)說明:
    參數(shù) 數(shù)據(jù)類型 方向 說明
    thread_handle void * 輸入 線程句柄,NULL表示當(dāng)前線程。
  • 返回結(jié)果說明:此接口無返回參數(shù)。

HAL_ThreadDetach

  • 原型:
    void HAL_ThreadDetach(_IN_ void *thread_handle);
  • 接口說明:調(diào)用此接口將指定線程設(shè)置為分離狀態(tài)。
  • 參數(shù)說明:
    參數(shù) 數(shù)據(jù)類型 方向 說明
    thread_handle void * 輸入 線程句柄,NULL表示當(dāng)前線程。
  • 返回結(jié)果說明:此接口無返回參數(shù)。