Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00043 #ifndef __SBTHREAD_H__
00044 #define __SBTHREAD_H__
00045
00046 #include <sphinx_config.h>
00047 #include <sphinxbase_export.h>
00048 #include <cmd_ln.h>
00049
00050 #ifdef __cplusplus
00051 extern "C" {
00052 #endif
00053 #if 0
00054
00055 }
00056 #endif
00057
00061 typedef struct sbthread_s sbthread_t;
00062
00066 typedef struct sbmsgq_s sbmsgq_t;
00067
00071 typedef struct sbmtx_s sbmtx_t;
00072
00076 typedef struct sbevent_s sbevent_t;
00077
00081 typedef int (*sbthread_main)(sbthread_t *th);
00082
00086 SPHINXBASE_EXPORT
00087 sbthread_t *sbthread_start(cmd_ln_t *config, sbthread_main func, void *arg);
00088
00092 SPHINXBASE_EXPORT
00093 int sbthread_wait(sbthread_t *th);
00094
00098 SPHINXBASE_EXPORT
00099 void sbthread_free(sbthread_t *th);
00100
00104 SPHINXBASE_EXPORT
00105 cmd_ln_t *sbthread_config(sbthread_t *th);
00106
00110 SPHINXBASE_EXPORT
00111 void *sbthread_arg(sbthread_t *th);
00112
00116 SPHINXBASE_EXPORT
00117 sbmsgq_t *sbthread_msgq(sbthread_t *th);
00118
00122 SPHINXBASE_EXPORT
00123 int sbthread_wait(sbthread_t *th);
00124
00131 SPHINXBASE_EXPORT
00132 int sbthread_send(sbthread_t *th, size_t len, void const *data);
00133
00139 SPHINXBASE_EXPORT
00140 sbmsgq_t *sbmsgq_init(size_t depth);
00141
00145 SPHINXBASE_EXPORT
00146 void sbmsgq_free(sbmsgq_t *q);
00147
00151 SPHINXBASE_EXPORT
00152 int sbmsgq_send(sbmsgq_t *q, size_t len, void const *data);
00153
00157 SPHINXBASE_EXPORT
00158 void *sbmsgq_wait(sbmsgq_t *q, size_t *out_len, int sec, int nsec);
00159
00163 SPHINXBASE_EXPORT
00164 sbmtx_t *sbmtx_init(void);
00165
00169 SPHINXBASE_EXPORT
00170 int sbmtx_trylock(sbmtx_t *mtx);
00171
00175 SPHINXBASE_EXPORT
00176 int sbmtx_lock(sbmtx_t *mtx);
00177
00181 SPHINXBASE_EXPORT
00182 int sbmtx_unlock(sbmtx_t *mtx);
00183
00187 SPHINXBASE_EXPORT
00188 void sbmtx_free(sbmtx_t *mtx);
00189
00193 SPHINXBASE_EXPORT
00194 sbevent_t *sbevent_init(void);
00195
00199 SPHINXBASE_EXPORT
00200 void sbevent_free(sbevent_t *evt);
00201
00205 SPHINXBASE_EXPORT
00206 int sbevent_signal(sbevent_t *evt);
00207
00211 SPHINXBASE_EXPORT
00212 int sbevent_wait(sbevent_t *evt, int sec, int nsec);
00213
00214
00215 #ifdef __cplusplus
00216 }
00217 #endif
00218
00219
00220 #endif