sbthread.h
Go to the documentation of this file.
/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
/* ====================================================================
* Copyright (c) 2008 Carnegie Mellon University. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* This work was supported in part by funding from the Defense Advanced
* Research Projects Agency and the National Science Foundation of the
* United States of America, and the CMU Sphinx Speech Consortium.
*
* THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
* NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* ====================================================================
*
*/
#ifndef __SBTHREAD_H__
#define __SBTHREAD_H__
#include <sphinx_config.h>
#include <sphinxbase/sphinxbase_export.h>
#include <sphinxbase/cmd_ln.h>
#ifdef __cplusplus
extern "C" {
#endif
#if 0
/* Fool Emacs. */
}
#endif
typedef struct sbthread_s sbthread_t;
typedef struct sbmsgq_s sbmsgq_t;
typedef struct sbmtx_s sbmtx_t;
typedef struct sbevent_s sbevent_t;
typedef int (*sbthread_main)(sbthread_t *th);
SPHINXBASE_EXPORT
sbthread_t *sbthread_start(cmd_ln_t *config, sbthread_main func, void *arg);
SPHINXBASE_EXPORT
int sbthread_wait(sbthread_t *th);
SPHINXBASE_EXPORT
void sbthread_free(sbthread_t *th);
SPHINXBASE_EXPORT
cmd_ln_t *sbthread_config(sbthread_t *th);
SPHINXBASE_EXPORT
void *sbthread_arg(sbthread_t *th);
SPHINXBASE_EXPORT
sbmsgq_t *sbthread_msgq(sbthread_t *th);
SPHINXBASE_EXPORT
int sbthread_wait(sbthread_t *th);
SPHINXBASE_EXPORT
int sbthread_send(sbthread_t *th, size_t len, void const *data);
SPHINXBASE_EXPORT
sbmsgq_t *sbmsgq_init(size_t depth);
SPHINXBASE_EXPORT
void sbmsgq_free(sbmsgq_t *q);
SPHINXBASE_EXPORT
int sbmsgq_send(sbmsgq_t *q, size_t len, void const *data);
SPHINXBASE_EXPORT
void *sbmsgq_wait(sbmsgq_t *q, size_t *out_len, int sec, int nsec);
SPHINXBASE_EXPORT
sbmtx_t *sbmtx_init(void);
SPHINXBASE_EXPORT
int sbmtx_trylock(sbmtx_t *mtx);
SPHINXBASE_EXPORT
int sbmtx_lock(sbmtx_t *mtx);
SPHINXBASE_EXPORT
int sbmtx_unlock(sbmtx_t *mtx);
SPHINXBASE_EXPORT
void sbmtx_free(sbmtx_t *mtx);
SPHINXBASE_EXPORT
sbevent_t *sbevent_init(void);
SPHINXBASE_EXPORT
void sbevent_free(sbevent_t *evt);
SPHINXBASE_EXPORT
int sbevent_signal(sbevent_t *evt);
SPHINXBASE_EXPORT
int sbevent_wait(sbevent_t *evt, int sec, int nsec);
#ifdef __cplusplus
}
#endif
#endif /* __SBTHREAD_H__ */
cmd_ln.h
Command-line and other configurationparsing and handling.
sbthread_t
struct sbthread_s sbthread_t
Thread object.
Definition sbthread.h:62
sbthread_wait
SPHINXBASE_EXPORT int sbthread_wait(sbthread_t *th)
Wait for a thread to complete.
Definition sbthread.c:425
sbthread_main
int(* sbthread_main)(sbthread_t *th)
Entry point for a thread.
Definition sbthread.h:82
sbthread_arg
SPHINXBASE_EXPORT void * sbthread_arg(sbthread_t *th)
Get argument pointer from a thread.
Definition sbthread.c:716
sbmtx_t
struct sbmtx_s sbmtx_t
Mutex (critical section) object.
Definition sbthread.h:72
sbevent_init
SPHINXBASE_EXPORT sbevent_t * sbevent_init(void)
Initialize an event.
Definition sbthread.c:611
sbthread_start
SPHINXBASE_EXPORT sbthread_t * sbthread_start(cmd_ln_t *config, sbthread_main func, void *arg)
Start a new thread.
Definition sbthread.c:406
sbevent_t
struct sbevent_s sbevent_t
Event object.
Definition sbthread.h:77
sbmtx_trylock
SPHINXBASE_EXPORT int sbmtx_trylock(sbmtx_t *mtx)
Try to acquire a mutex.
Definition sbthread.c:684
sbmtx_init
SPHINXBASE_EXPORT sbmtx_t * sbmtx_init(void)
Create a mutex.
Definition sbthread.c:671
sbmtx_lock
SPHINXBASE_EXPORT int sbmtx_lock(sbmtx_t *mtx)
Acquire a mutex.
Definition sbthread.c:690
sbevent_signal
SPHINXBASE_EXPORT int sbevent_signal(sbevent_t *evt)
Signal an event.
Definition sbthread.c:640
sbthread_send
SPHINXBASE_EXPORT int sbthread_send(sbthread_t *th, size_t len, void const *data)
Send an asynchronous message to a thread.
Definition sbthread.c:728
sbmtx_free
SPHINXBASE_EXPORT void sbmtx_free(sbmtx_t *mtx)
Dispose of a mutex.
Definition sbthread.c:702
sbthread_free
SPHINXBASE_EXPORT void sbthread_free(sbthread_t *th)
Free a thread object.
Definition sbthread.c:734
sbmsgq_t
struct sbmsgq_s sbmsgq_t
Asynchronous message queue object.
Definition sbthread.h:67
sbmsgq_send
SPHINXBASE_EXPORT int sbmsgq_send(sbmsgq_t *q, size_t len, void const *data)
Post a message to a queue.
Definition sbthread.c:475
sbmsgq_free
SPHINXBASE_EXPORT void sbmsgq_free(sbmsgq_t *q)
Free a message queue.
Definition sbthread.c:465
sbmsgq_init
SPHINXBASE_EXPORT sbmsgq_t * sbmsgq_init(size_t depth)
Create a message queue.
Definition sbthread.c:444
sbevent_wait
SPHINXBASE_EXPORT int sbevent_wait(sbevent_t *evt, int sec, int nsec)
Wait for an event to be signalled.
Definition sbthread.c:652
sbmsgq_wait
SPHINXBASE_EXPORT void * sbmsgq_wait(sbmsgq_t *q, size_t *out_len, int sec, int nsec)
Wait for a message from a queue.
Definition sbthread.c:555
sbthread_msgq
SPHINXBASE_EXPORT sbmsgq_t * sbthread_msgq(sbthread_t *th)
Get message queue from a thread.
Definition sbthread.c:722
sbmtx_unlock
SPHINXBASE_EXPORT int sbmtx_unlock(sbmtx_t *mtx)
Release a mutex.
Definition sbthread.c:696
sbthread_config
SPHINXBASE_EXPORT cmd_ln_t * sbthread_config(sbthread_t *th)
Get configuration object from a thread.
Definition sbthread.c:710
sbevent_free
SPHINXBASE_EXPORT void sbevent_free(sbevent_t *evt)
Free an event.
Definition sbthread.c:632
cmd_ln_t
Opaque structure used to hold the results of command-line parsing.
sbevent_s
Definition sbthread.c:385
sbmsgq_s
Definition sbthread.c:371
sbmtx_s
Definition sbthread.c:391
sbthread_s
Definition sbthread.c:363