⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ngx_freebsd_rfork_thread.h

📁 nginx 反向代理0.7.1版本 用于实现反向代理
💻 H
字号:
/* * Copyright (C) Igor Sysoev */#ifndef _NGX_FREEBSD_RFORK_THREAD_H_INCLUDED_#define _NGX_FREEBSD_RFORK_THREAD_H_INCLUDED_#include <sys/ipc.h>#include <sys/sem.h>#include <sched.h>typedef pid_t  ngx_tid_t;#define ngx_log_pid    ngx_thread_self()#define ngx_log_tid    0#define NGX_TID_T_FMT  "%P"#define NGX_MUTEX_LIGHT      1#define NGX_MUTEX_LOCK_BUSY  0x80000000typedef volatile struct {    ngx_atomic_t  lock;    ngx_log_t    *log;    int           semid;} ngx_mutex_t;#define NGX_CV_SIGNAL        64typedef struct {    int           signo;    int           kq;    ngx_tid_t     tid;    ngx_log_t    *log;} ngx_cond_t;#define ngx_thread_sigmask(how, set, oset)                         \            (sigprocmask(how, set, oset) == -1) ? ngx_errno : 0#define ngx_thread_sigmask_n   "sigprocmask()"#define ngx_thread_join(t, p)#define ngx_setthrtitle(n)     setproctitle(n)extern char    *ngx_freebsd_kern_usrstack;extern size_t   ngx_thread_stack_size;static ngx_inline ngx_int_tngx_gettid(){    char  *sp;    if (ngx_thread_stack_size == 0) {        return 0;    }#if ( __i386__ )    __asm__ volatile ("mov %%esp, %0" : "=q" (sp));#elif ( __amd64__ )    __asm__ volatile ("mov %%rsp, %0" : "=q" (sp));#else#error "rfork()ed threads are not supported on this platform"#endif    return (ngx_freebsd_kern_usrstack - sp) / ngx_thread_stack_size;}ngx_tid_t ngx_thread_self();typedef ngx_uint_t               ngx_tls_key_t;#define NGX_THREAD_KEYS_MAX      16extern void    **ngx_tls;ngx_err_t ngx_thread_key_create(ngx_tls_key_t *key);#define ngx_thread_key_create_n  "the tls key creation"ngx_err_t ngx_thread_set_tls(ngx_tls_key_t key, void *value);#define ngx_thread_set_tls_n     "the tls key setting"static void *ngx_thread_get_tls(ngx_tls_key_t key){    if (key >= NGX_THREAD_KEYS_MAX) {        return NULL;    }    return ngx_tls[key * NGX_THREAD_KEYS_MAX + ngx_gettid()];}#define ngx_mutex_trylock(m)  ngx_mutex_dolock(m, 1)#define ngx_mutex_lock(m)     (void) ngx_mutex_dolock(m, 0)ngx_int_t ngx_mutex_dolock(ngx_mutex_t *m, ngx_int_t try);void ngx_mutex_unlock(ngx_mutex_t *m);typedef int (*ngx_rfork_thread_func_pt)(void *arg);#endif /* _NGX_FREEBSD_RFORK_THREAD_H_INCLUDED_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -