Merge branch 'v5-stable-elasticsearch' into v5-devel-tmp
[rsyslog.git] / threads.h
1 /* Definition of the threading support module.
2  *
3  * Copyright 2007-2012 Adiscon GmbH.
4  *
5  * This file is part of rsyslog.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *       http://www.apache.org/licenses/LICENSE-2.0
12  *       -or-
13  *       see COPYING.ASL20 in the source distribution
14  * 
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  */
21
22 #ifndef THREADS_H_INCLUDED
23 #define THREADS_H_INCLUDED
24
25 /* the thread object */
26 struct thrdInfo {
27         pthread_mutex_t mutThrd;/* mutex for handling long-running operations and shutdown */
28         pthread_cond_t condThrdTerm;/* condition: thread terminates (used just for shutdown loop) */
29         int bIsActive;          /* Is thread running? */
30         int bShallStop;         /* set to 1 if the thread should be stopped ? */
31         rsRetVal (*pUsrThrdMain)(struct thrdInfo*); /* user thread main to be called in new thread */
32         rsRetVal (*pAfterRun)(struct thrdInfo*);   /* cleanup function */
33         pthread_t thrdID;
34         sbool bNeedsCancel;     /* must input be terminated by pthread_cancel()? */
35 };
36
37 /* prototypes */
38 rsRetVal thrdExit(void);
39 rsRetVal thrdInit(void);
40 rsRetVal thrdTerminate(thrdInfo_t *pThis);
41 rsRetVal thrdTerminateAll(void);
42 rsRetVal thrdCreate(rsRetVal (*thrdMain)(thrdInfo_t*), rsRetVal(*afterRun)(thrdInfo_t *), sbool);
43
44 /* macros (replace inline functions) */
45
46 #endif /* #ifndef THREADS_H_INCLUDED */