bottleneck testcase based on rubbos
[bottlenecks.git] / rubbos / app / httpd-2.0.64 / srclib / apr / include / arch / beos / apr_arch_threadproc.h
1 /* Licensed to the Apache Software Foundation (ASF) under one or more
2  * contributor license agreements.  See the NOTICE file distributed with
3  * this work for additional information regarding copyright ownership.
4  * The ASF licenses this file to You under the Apache License, Version 2.0
5  * (the "License"); you may not use this file except in compliance with
6  * the License.  You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include "apr_thread_proc.h"
18 #include "apr_arch_file_io.h"
19 #include "apr_file_io.h"
20 #include "apr_thread_proc.h"
21 #include "apr_general.h"
22 #include "apr_portable.h"
23 #include <kernel/OS.h>
24 #include <signal.h>
25 #include <string.h>
26 #include <sys/wait.h>
27 #include <image.h>
28
29 #ifndef THREAD_PROC_H
30 #define THREAD_PROC_H
31
32 #define SHELL_PATH "/bin/sh"
33
34 #define PTHREAD_CANCEL_AYNCHRONOUS  CANCEL_ASYNCH; 
35 #define PTHREAD_CANCEL_DEFERRED     CANCEL_DEFER; 
36                                    
37 #define PTHREAD_CANCEL_ENABLE       CANCEL_ENABLE; 
38 #define PTHREAD_CANCEL_DISABLE      CANCEL_DISABLE; 
39
40 #define BEOS_MAX_DATAKEYS       128
41
42 struct apr_thread_t {
43     apr_pool_t *pool;
44     thread_id td;
45     void *data;
46     apr_thread_start_t func;
47     apr_status_t exitval;
48 };
49
50 struct apr_threadattr_t {
51     apr_pool_t *pool;
52     int32 attr;
53     int detached;
54     int joinable;
55 };
56
57 struct apr_threadkey_t {
58     apr_pool_t *pool;
59         int32  key;
60 };
61
62 struct beos_private_data {
63         const void ** data;
64         int count;
65         volatile thread_id  td;
66 };
67
68 struct beos_key {
69         int  assigned;
70         int  count;
71         sem_id  lock;
72         int32  ben_lock;
73         void (* destructor) (void *);
74 };
75
76 struct apr_procattr_t {
77     apr_pool_t *pool;
78     apr_file_t *parent_in;
79     apr_file_t *child_in;
80     apr_file_t *parent_out;
81     apr_file_t *child_out;
82     apr_file_t *parent_err;
83     apr_file_t *child_err;
84     char *currdir;
85     apr_int32_t cmdtype;
86     apr_int32_t detached;
87 };
88
89 struct apr_thread_once_t {
90     sem_id sem;
91     int hit;
92 };
93
94 #endif  /* ! THREAD_PROC_H */
95