| |
| /* |
| * Copyright (C) Igor Sysoev |
| * Copyright (C) Nginx, Inc. |
| */ |
| |
| |
| #ifndef _NGX_THREAD_H_INCLUDED_ |
| #define _NGX_THREAD_H_INCLUDED_ |
| |
| |
| #include <ngx_config.h> |
| #include <ngx_core.h> |
| |
| #if (NGX_THREADS) |
| |
| #include <pthread.h> |
| |
| |
| typedef pthread_mutex_t ngx_thread_mutex_t; |
| |
| ngx_int_t ngx_thread_mutex_create(ngx_thread_mutex_t *mtx, ngx_log_t *log); |
| ngx_int_t ngx_thread_mutex_destroy(ngx_thread_mutex_t *mtx, ngx_log_t *log); |
| ngx_int_t ngx_thread_mutex_lock(ngx_thread_mutex_t *mtx, ngx_log_t *log); |
| ngx_int_t ngx_thread_mutex_unlock(ngx_thread_mutex_t *mtx, ngx_log_t *log); |
| |
| |
| typedef pthread_cond_t ngx_thread_cond_t; |
| |
| ngx_int_t ngx_thread_cond_create(ngx_thread_cond_t *cond, ngx_log_t *log); |
| ngx_int_t ngx_thread_cond_destroy(ngx_thread_cond_t *cond, ngx_log_t *log); |
| ngx_int_t ngx_thread_cond_signal(ngx_thread_cond_t *cond, ngx_log_t *log); |
| ngx_int_t ngx_thread_cond_wait(ngx_thread_cond_t *cond, ngx_thread_mutex_t *mtx, |
| ngx_log_t *log); |
| |
| |
| #if (NGX_LINUX) |
| |
| typedef pid_t ngx_tid_t; |
| #define NGX_TID_T_FMT "%P" |
| |
| #elif (NGX_FREEBSD) |
| |
| typedef uint32_t ngx_tid_t; |
| #define NGX_TID_T_FMT "%uD" |
| |
| #elif (NGX_DARWIN) |
| |
| typedef uint64_t ngx_tid_t; |
| #define NGX_TID_T_FMT "%uA" |
| |
| #else |
| |
| typedef uint64_t ngx_tid_t; |
| #define NGX_TID_T_FMT "%uA" |
| |
| #endif |
| |
| ngx_tid_t ngx_thread_tid(void); |
| |
| #define ngx_log_tid ngx_thread_tid() |
| |
| #else |
| |
| #define ngx_log_tid 0 |
| #define NGX_TID_T_FMT "%d" |
| |
| #endif |
| |
| |
| #endif /* _NGX_THREAD_H_INCLUDED_ */ |