24 #ifdef HAVE_SEMAPHORE_H
25 #include semaphore.h /* семафоры Posix */
26 #ifndef SEM_FAILED
27 #define SEM_FAILED ((sem_t *)(-1))
28 #endif
29 #endif
30 #ifdef HAVE_SYS_MMAN_H
31 #include sys/mman.h /* разделяемая память Posix */
32 #endif
33 #ifndef MAP_FAILED
34 #define MAP_FAILED ((void *)(-1))
35 #endif
36 #ifdef HAVE_SYS_IPC_H
37 #include sys/ipc.h /* System V IPC */
38 #endif
39 #ifdef HAVE_SYS_MSG_H
40 #include sys/msg.h /* очереди сообщений System V */
41 #endif
42 #ifdef HAVE_SYS_SEM_H
43 #ifdef __bsdi__
44 #undef HAVE_SYS_SEM_H /* тонкий момент: прототип semctl в BSDI's содержит ошибки*/
45 #else
46 #include sys/sem.h /* семафоры System V */
47 #endif
48 #ifndef HAVE_SEMUN_UNION /* $$.It semun$$ */
49 union semun { /* определение объединения для semctl */
50 int val;
51 struct semid_ds *buf;
52 unsigned short *array;
53 };
54 #endif
55 #endif /* HAVE_SYS_SEM_H */
56 #ifdef HAVE_SYS_SHM_H
57 #include sys/shm.h /* разделяемая память System V */
58 #endif
59 #ifdef HAVE_SYS_SELECT_H
60 #include sys/select.h /* для удобства */
61 #endif
62 #ifdef HAVE_POLL_H
63 #include poll.h /* для удобства */
64 #endif
65 #ifdef HAVE_STROPTS_H
66 #include stropts.h /* для удобства */
67 #endif
68 #ifdef HAVE_STRINGS_H
69 #include strings.h /* для удобства */
70 #endif
71 /* Следующие три заголовочных файла нужны для ioctl файлов и сокетов:
72 * sys/ioctl.h, sys/filio.h, и sys/sockio.h.
73 */
74 #ifdef HAVE_SYS_IOCTL_H
75 #include sys/ioctl.h
76 #endif
77 #ifdef HAVE_SYS_FILIO_H
78 #include sys/filio.h
79 #endif
80 #ifdef HAVE_PTHREAD_H
81 #include pthread.h
82 #endif
83 #ifdef HAVE_DOOR_H
84 #include door.h /* интерфейс дверей Solaris */
85 #endif
86 #ifdef HAVE_RPC_RPC_H
87 #ifdef _PSX4_NSPACE_H_TS /* баги Digital Unix 4.0b */
88 #undef SUCCESS
89 #endif
90 #include rpc/rpc.h /* Sun RPC */
91 #endif
92 /* Определяем bzero как макрос, если его нет в стандартной библиотеке С */
93 #ifndef HAVE_BZERO
94 #define bzero(ptr,n) memset(ptr, 0, n)
95 #endif
96 /* Posix.1g требует, чтобы INFTIM определялось в poll.h. но во многих системах эта
97 константа все еще определяется в sys/stropts.h. Нам не нужно подключать все
98 функции для работы с потоками, поэтому мы определяем INFTM здесь. Это стандартное
99 значение, но нет гарантий, что оно равно –1 */
100 #ifndef INFTIM
101 #define INFTIM (-1) /* неограниченное время опроса */
102 #ifdef HAVE_POLL_H
103 #define INFTIM_UNPH /* чтобы из файла unpxti.h узнать, что константа определена */
104 #endif
105 #endif