Rev 80 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2 | pj | 1 | /* |
2 | * Project: S.Ha.R.K. |
||
3 | * |
||
4 | * Coordinators: |
||
5 | * Giorgio Buttazzo <giorgio@sssup.it> |
||
6 | * Paolo Gai <pj@gandalf.sssup.it> |
||
7 | * |
||
8 | * Authors : |
||
9 | * Paolo Gai <pj@gandalf.sssup.it> |
||
10 | * Massimiliano Giorgi <massy@gandalf.sssup.it> |
||
11 | * Luca Abeni <luca@gandalf.sssup.it> |
||
12 | * (see the web pages for full authors list) |
||
13 | * |
||
14 | * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy) |
||
15 | * |
||
16 | * http://www.sssup.it |
||
17 | * http://retis.sssup.it |
||
18 | * http://shark.sssup.it |
||
19 | */ |
||
20 | |||
21 | /** |
||
22 | ------------ |
||
166 | giacomo | 23 | CVS : $Id: unistd.h,v 1.3 2003-05-22 09:35:08 giacomo Exp $ |
2 | pj | 24 | |
25 | File: $File$ |
||
166 | giacomo | 26 | Revision: $Revision: 1.3 $ |
27 | Last update: $Date: 2003-05-22 09:35:08 $ |
||
2 | pj | 28 | ------------ |
29 | |||
30 | unistd.h, inspired on BSD one... |
||
31 | and heavy modified by Massy (inspired on GLibc one...) |
||
32 | |||
33 | **/ |
||
34 | |||
35 | /* |
||
36 | * Copyright (C) 2000 Paolo Gai |
||
37 | * |
||
38 | * This program is free software; you can redistribute it and/or modify |
||
39 | * it under the terms of the GNU General Public License as published by |
||
40 | * the Free Software Foundation; either version 2 of the License, or |
||
41 | * (at your option) any later version. |
||
42 | * |
||
43 | * This program is distributed in the hope that it will be useful, |
||
44 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
||
45 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||
46 | * GNU General Public License for more details. |
||
47 | * |
||
48 | * You should have received a copy of the GNU General Public License |
||
49 | * along with this program; if not, write to the Free Software |
||
50 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
||
51 | * |
||
52 | */ |
||
53 | |||
54 | /* |
||
55 | * Copyright (c) 1989, 1993 |
||
56 | * The Regents of the University of California. All rights reserved. |
||
57 | * |
||
58 | * Redistribution and use in source and binary forms, with or without |
||
59 | * modification, are permitted provided that the following conditions |
||
60 | * are met: |
||
61 | * 1. Redistributions of source code must retain the above copyright |
||
62 | * notice, this list of conditions and the following disclaimer. |
||
63 | * 2. Redistributions in binary form must reproduce the above copyright |
||
64 | * notice, this list of conditions and the following disclaimer in the |
||
65 | * documentation and/or other materials provided with the distribution. |
||
66 | * 3. All advertising materials mentioning features or use of this software |
||
67 | * must display the following acknowledgement: |
||
68 | * This product includes software developed by the University of |
||
69 | * California, Berkeley and its contributors. |
||
70 | * 4. Neither the name of the University nor the names of its contributors |
||
71 | * may be used to endorse or promote products derived from this software |
||
72 | * without specific prior written permission. |
||
73 | * |
||
74 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
||
75 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
||
76 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||
77 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
||
78 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
||
79 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
||
80 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
||
81 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
||
82 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
||
83 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
||
84 | * SUCH DAMAGE. |
||
85 | * |
||
86 | * @(#)unistd.h 8.2 (Berkeley) 1/7/94 |
||
87 | */ |
||
88 | |||
89 | #ifndef __UNISTD_H__ |
||
90 | #define __UNISTD_H__ |
||
91 | |||
92 | #include <features.h> |
||
80 | pj | 93 | #include "ll/sys/cdefs.h" |
2 | pj | 94 | |
80 | pj | 95 | __BEGIN_DECLS |
96 | |||
2 | pj | 97 | void _exit(int status); |
98 | |||
99 | /* compile-time symbolic constants */ |
||
100 | |||
101 | /* NYI = Not Yet Implemented */ |
||
102 | |||
103 | // NYI #define _POSIX_ASYNCHRONOUS_IO |
||
104 | // NYI #define _POSIX_ASYNC_IO |
||
105 | // NRQ for PSE52 #define _POSIX_CHOWN_RESTRICTED 1 |
||
106 | // NYI #define _POSIX_FSYNC |
||
107 | // NRQ for PSE52 #define _POSIX_JOB_CONTROL |
||
108 | // NYI #define _POSIX_MAPPED_FILES |
||
109 | // NYI #define _POSIX_MEMLOCK |
||
110 | // NYI #define _POSIX_MEMLOCK_RANGE |
||
111 | // NRQ for PSE52 #define _POSIX_MEMORY_PROTECTION |
||
112 | #define _POSIX_MESSAGE_PASSING |
||
113 | // NYI #define _POSIX_NO_TRUNC 1 |
||
114 | // NRQ for PSE52 #define _POSIX_PRIORITIZED_IO |
||
115 | // NRQ for PSE52 #define _POSIX_PRIORITY_SCHEDULING |
||
116 | // NYI #define _POSIX_PRIO_IO |
||
117 | #define _POSIX_REALTIME_SIGNALS |
||
118 | // NRQ for PSE52 #define _POSIX_SAVED_IDS |
||
119 | #define _POSIX_SEMAPHORES |
||
120 | // NYI #define _POSIX_SHARED_MEMORY_OBJECTS |
||
121 | // NYI #define _POSIX_SYNCHRONIZED_IO |
||
122 | // NYI #define _POSIX_SYNC_IO |
||
123 | #define _POSIX_THREADS |
||
124 | #define _POSIX_THREAD_ATTR_STACKADDR |
||
125 | #define _POSIX_THREAD_ATTR_STACKSIZE |
||
126 | #define _POSIX_THREAD_PRIO_INHERIT |
||
127 | #define _POSIX_THREAD_PRIO_PROTECT |
||
128 | #define _POSIX_THREAD_PRIORITY_SCHEDULING |
||
129 | // NRQ for PSE52 #define _POSIX_THREAD_PROCESS_SHARED |
||
130 | // NYI #define _POSIX_THREAD_SAFE_FUNCTIONS |
||
131 | #define _POSIX_TIMERS |
||
132 | // NRQ for PSE52 #define _POSIX_VDISABLE 0xff |
||
133 | #define _POSIX_VERSION 199506L |
||
134 | |||
135 | |||
136 | |||
137 | |||
138 | |||
139 | |||
140 | |||
141 | /* access function */ |
||
142 | #define F_OK 0 /* test for existence of file */ |
||
143 | #define X_OK 0x01 /* test for execute or search permission */ |
||
144 | #define W_OK 0x02 /* test for write permission */ |
||
145 | #define R_OK 0x04 /* test for read permission */ |
||
146 | |||
147 | /* whence values for lseek(2) */ |
||
148 | #define SEEK_SET 0 /* set file offset to offset */ |
||
149 | #define SEEK_CUR 1 /* set file offset to current plus offset */ |
||
150 | #define SEEK_END 2 /* set file offset to EOF plus offset */ |
||
151 | |||
152 | #ifndef _POSIX_SOURCE |
||
153 | /* whence values for lseek(2); renamed by POSIX 1003.1 */ |
||
154 | #define L_SET SEEK_SET |
||
155 | #define L_INCR SEEK_CUR |
||
156 | #define L_XTND SEEK_END |
||
157 | #endif |
||
158 | |||
159 | /* configurable pathname variables */ |
||
160 | #define _PC_ASYNC_IO 1 |
||
161 | #define _PC_CHOWN_RESTRICTED 2 |
||
162 | #define _PC_LINK_MAX 3 |
||
163 | #define _PC_MAX_CANON 4 |
||
164 | #define _PC_MAX_INPUT 5 |
||
165 | #define _PC_NAME_MAX 6 |
||
166 | #define _PC_NO_TRUNC 7 |
||
167 | #define _PC_PATH_MAX 8 |
||
168 | #define _PC_PIPE_BUF 9 |
||
169 | #define _PC_PRIO_IO 10 |
||
170 | #define _PC_SYNC_IO 11 |
||
171 | #define _PC_VDISABLE 12 |
||
172 | |||
173 | /* configurable system variables */ |
||
174 | #define _SC_AIO_LISTIO_MAX 1 |
||
175 | #define _SC_AIO_MAX 2 |
||
176 | #define _SC_AIO_PRIO_DELTA_MAX 3 |
||
177 | #define _SC_ARG_MAX 4 |
||
178 | #define _SC_CHILD_MAX 5 |
||
179 | #define _SC_CLK_TICK 6 |
||
180 | #define _SC_DELAYTIMER_MAX 7 |
||
181 | #define _SC_GETGR_R_SIZE_MAX 8 |
||
182 | #define _SC_GETPW_R_SIZE_MAX 9 |
||
183 | #define _SC_LOGIN_NAME_MAX 10 |
||
184 | #define _SC_MQ_OPEN_MAX 11 |
||
185 | #define _SC_MQ_PRIO_MAX 12 |
||
186 | #define _SC_NGROUPS_MAX 13 |
||
187 | #define _SC_OPEN_MAX 14 |
||
188 | #define _SC_PAGESIZE 15 |
||
189 | #define _SC_RTSIG_MAX 16 |
||
190 | #define _SC_SEM_NSEMS_MAX 17 |
||
191 | #define _SC_SEM_VALUE_MAX 18 |
||
192 | #define _SC_SIGQUEUE_MAX 19 |
||
193 | #define _SC_STREAM_MAX 20 |
||
194 | #define _SC_THREAD_DESTRUCTOR_ITERATIONS 21 |
||
195 | #define _SC_THREAD_KEYS_MAX 22 |
||
196 | #define _SC_THREAD_STACK_MIN 23 |
||
197 | #define _SC_THREAD_THREADS_MAX 24 |
||
198 | #define _SC_TIMER_MAX 25 |
||
199 | #define _SC_TTY_NAME_MAX 26 |
||
200 | #define _SC_TZNAME_MAX 27 |
||
201 | |||
202 | #define _SC_ASYNCHRONOUS_IO 28 |
||
203 | #define _SC_FSYNC 29 |
||
204 | #define _SC_JOB_CONTROL 30 |
||
205 | #define _SC_MAPPED_FILES 31 |
||
206 | #define _SC_MEMLOCK 32 |
||
207 | #define _SC_MEMLOCK_RANGE 33 |
||
208 | #define _SC_MEMORY_PROTECTION 34 |
||
209 | #define _SC_MESSAGE_PASSING 35 |
||
210 | #define _SC_PRIORITIZED_IO 36 |
||
211 | #define _SC_PRIORITY_SCHEDULING 37 |
||
212 | #define _SC_REALTIME_SIGNALS 38 |
||
213 | #define _SC_SAVED_IDS 39 |
||
214 | #define _SC_SEMAPHORES 40 |
||
215 | #define _SC_SHARED_MEMORY_OBJECTS 41 |
||
216 | #define _SC_SYNCHRONIZED_IO 42 |
||
217 | #define _SC_TIMERS 43 |
||
218 | #define _SC_THREADS 44 |
||
219 | #define _SC_THREAD_ATTR_STACKADDR 45 |
||
220 | #define _SC_THREAD_ATTR_STACKSIZE 46 |
||
221 | #define _SC_THREAD_PRIORITY_SCHEDULING 47 |
||
222 | #define _SC_THREAD_PRIO_INHERIT 48 |
||
223 | #define _SC_THREAD_PRIO_PROTECT 49 |
||
224 | #define _SC_THREAD_PROCESS_SHARED 50 |
||
225 | #define _SC_THREAD_SAFE_FUNCTIONS 51 |
||
226 | #define _SC_VERSION 52 |
||
227 | |||
228 | /* configurable system strings */ |
||
229 | #define _CS_PATH 1 |
||
230 | |||
231 | /*+ send an alarm signal +*/ |
||
232 | unsigned int alarm(unsigned int seconds); |
||
233 | |||
234 | /*+ wait a signal delivery +*/ |
||
235 | int pause(void); |
||
236 | |||
237 | /*+ sleep for n seconds or until a signal is delivered to the thread +*/ |
||
238 | unsigned int sleep(unsigned int seconds); |
||
239 | |||
166 | giacomo | 240 | /*+ sleep for n useconds */ |
241 | unsigned int usleep(unsigned int usec); |
||
242 | |||
243 | #define udelay(x) usleep(x) |
||
2 | pj | 244 | /* |
245 | * |
||
246 | * |
||
247 | * |
||
248 | * |
||
249 | * |
||
250 | * |
||
251 | */ |
||
252 | |||
253 | /* X/Open version number to which the library conforms. It is selectable. */ |
||
254 | //#ifdef __USE_UNIX98 |
||
255 | //# define _XOPEN_VERSION 500 |
||
256 | //#else |
||
257 | //# define _XOPEN_VERSION 4 |
||
258 | //#endif |
||
259 | |||
260 | /* Commands and utilities from XPG4 are available. */ |
||
261 | //#define _XOPEN_XCU_VERSION 4 |
||
262 | |||
263 | /* We are compatible with the old published standards as well. */ |
||
264 | //#define _XOPEN_XPG2 1 |
||
265 | //#define _XOPEN_XPG3 1 |
||
266 | //#define _XOPEN_XPG4 1 |
||
267 | |||
268 | /* The X/Open Unix extensions are available. */ |
||
269 | //#define _XOPEN_UNIX 1 |
||
270 | |||
271 | /* Encryption is present. */ |
||
272 | //#define _XOPEN_CRYPT 1 |
||
273 | |||
274 | /* The enhanced internationalization capabilities according to XPG4.2 |
||
275 | are present. */ |
||
276 | //#define _XOPEN_ENH_I18N 1 |
||
277 | |||
278 | /* The legacy interfaces are also available. */ |
||
279 | //#define _XOPEN_LEGACY 1 |
||
280 | |||
281 | /* Standard file descriptors. */ |
||
282 | #define STDIN_FILENO 0 /* Standard input. */ |
||
283 | #define STDOUT_FILENO 1 /* Standard output. */ |
||
284 | #define STDERR_FILENO 2 /* Standard error output. */ |
||
285 | |||
286 | #include <ll/sys/types.h> |
||
287 | #include <sys/types.h> |
||
288 | |||
289 | __DJ_dev_t |
||
290 | #undef __DJ_dev_t |
||
291 | #define __DJ_dev_t |
||
292 | |||
293 | __DJ_ino_t |
||
294 | #undef __DJ_ino_t |
||
295 | #define __DJ_ino_t |
||
296 | |||
297 | __DJ_mode_t |
||
298 | #undef __DJ_mode_t |
||
299 | #define __DJ_mode_t |
||
300 | |||
301 | __DJ_nlink_t |
||
302 | #undef __DJ_nlink_t |
||
303 | #define __DJ_nlink_t |
||
304 | |||
305 | __DJ_gid_t |
||
306 | #undef __DJ_gid_t |
||
307 | #define __DJ_gid_t |
||
308 | |||
309 | __DJ_off_t |
||
310 | #undef __DJ_off_t |
||
311 | #define __DJ_off_t |
||
312 | |||
313 | __DJ_pid_t |
||
314 | #undef __DJ_pid_t |
||
315 | #define __DJ_pid_t |
||
316 | |||
317 | __DJ_uid_t |
||
318 | #undef __DJ_uid_t |
||
319 | #define __DJ_uid_t |
||
320 | |||
321 | /* Test for access to NAME using the real UID and real GID. */ |
||
322 | extern int access __P ((__const char *__name, int __type)); |
||
323 | #if defined __USE_BSD && !defined L_SET |
||
324 | |||
325 | /* Old BSD names for the same constants; just for compatibility. */ |
||
326 | # define L_SET SEEK_SET |
||
327 | # define L_INCR SEEK_CUR |
||
328 | # define L_XTND SEEK_END |
||
329 | #endif |
||
330 | |||
331 | /* Move FD's file position to OFFSET bytes from the |
||
332 | beginning of the file (if WHENCE is SEEK_SET), |
||
333 | the current position (if WHENCE is SEEK_CUR), |
||
334 | or the end of the file (if WHENCE is SEEK_END). |
||
335 | Return the new file position. */ |
||
336 | //extern __off_t __lseek __P ((int __fd, __off_t __offset, int __whence)); |
||
337 | #ifndef __USE_FILE_OFFSET64 |
||
338 | extern __off_t lseek __P ((int __fd, __off_t __offset, int __whence)); |
||
339 | #else |
||
340 | # ifdef __REDIRECT |
||
341 | extern __off64_t __REDIRECT (lseek, |
||
342 | __P ((int __fd, __off64_t __offset, |
||
343 | int __whence)), |
||
344 | lseek64); |
||
345 | # else |
||
346 | # define lseek lseek64 |
||
347 | # endif |
||
348 | #endif |
||
349 | #ifdef __USE_LARGEFILE64 |
||
350 | extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence)); |
||
351 | #endif |
||
352 | |||
353 | /* Close the file descriptor FD. */ |
||
354 | //extern int __close __P ((int __fd)); |
||
355 | extern int close __P ((int __fd)); |
||
356 | |||
357 | /* Read NBYTES into BUF from FD. Return the |
||
358 | number read, -1 for errors or 0 for EOF. */ |
||
359 | //extern ssize_t __read __P ((int __fd, __ptr_t __buf, size_t __nbytes)); |
||
360 | extern ssize_t read __P ((int __fd, __ptr_t __buf, size_t __nbytes)); |
||
361 | |||
362 | /* Write N bytes of BUF to FD. Return the number written, or -1. */ |
||
363 | //extern ssize_t __write __P ((int __fd, __const __ptr_t __buf, size_t __n)); |
||
364 | extern ssize_t write __P ((int __fd, __const __ptr_t __buf, size_t __n)); |
||
365 | |||
366 | /* Change the process's working directory to PATH. */ |
||
367 | extern int chdir __P ((__const char *__path)); |
||
368 | |||
369 | #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED |
||
370 | /* Change the process's working directory to the one FD is open on. */ |
||
371 | //extern int fchdir __P ((int __fd)); |
||
372 | #endif |
||
373 | |||
374 | /* Get the pathname of the current working directory, |
||
375 | and put it in SIZE bytes of BUF. Returns NULL if the |
||
376 | directory couldn't be determined or SIZE was too small. |
||
377 | If successful, returns BUF. In GNU, if BUF is NULL, |
||
378 | an array is allocated with `malloc'; the array is SIZE |
||
379 | bytes long, unless SIZE == 0, in which case it is as |
||
380 | big as necessary. */ |
||
381 | extern char *getcwd __P ((char *__buf, size_t __size)); |
||
382 | |||
383 | #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED |
||
384 | /* Put the absolute pathname of the current working directory in BUF. |
||
385 | If successful, return BUF. If not, put an error message in |
||
386 | BUF and return NULL. BUF should be at least PATH_MAX bytes long. */ |
||
387 | extern char *getwd __P ((char *__buf)); |
||
388 | #endif |
||
389 | |||
390 | |||
391 | /* Duplicate FD, returning a new file descriptor on the same file. */ |
||
392 | extern int dup __P ((int __fd)); |
||
393 | |||
394 | /* Duplicate FD to FD2, closing FD2 and making it open on the same file. */ |
||
395 | extern int dup2 __P ((int __fd, int __fd2)); |
||
396 | |||
397 | /* Return 1 if FD is a valid descriptor associated |
||
398 | with a terminal, zero if not. */ |
||
399 | extern int isatty __P ((int __fd)); |
||
400 | |||
401 | /* Make all changes done to FD actually appear on disk. */ |
||
402 | extern int fsync __P ((int __fd)); |
||
403 | |||
404 | /* Truncate FILE to LENGTH bytes. */ |
||
405 | #ifndef __USE_FILE_OFFSET64 |
||
406 | extern int truncate __P ((__const char *__file, __off_t __length)); |
||
407 | #else |
||
408 | # ifdef __REDIRECT |
||
409 | extern int __REDIRECT (truncate, |
||
410 | __P ((__const char *__file, __off64_t __length)), |
||
411 | truncate64); |
||
412 | # else |
||
413 | # define truncate truncate64 |
||
414 | # endif |
||
415 | #endif |
||
416 | #ifdef __USE_LARGEFILE64 |
||
417 | extern int truncate64 __P ((__const char *__file, __off64_t __length)); |
||
418 | #endif |
||
419 | |||
420 | /* Truncate the file FD is open on to LENGTH bytes. */ |
||
421 | extern int __ftruncate __P ((int __fd, __off_t __length)); |
||
422 | #ifndef __USE_FILE_OFFSET64 |
||
423 | extern int ftruncate __P ((int __fd, __off_t __length)); |
||
424 | #else |
||
425 | # ifdef __REDIRECT |
||
426 | extern int __REDIRECT (ftruncate, __P ((int __fd, __off64_t __length)), |
||
427 | ftruncate64); |
||
428 | # else |
||
429 | # define ftruncate ftruncate64 |
||
430 | # endif |
||
431 | #endif |
||
432 | #ifdef __USE_LARGEFILE64 |
||
433 | extern int ftruncate64 __P ((int __fd, __off64_t __length)); |
||
434 | #endif |
||
435 | |||
436 | /* Return the maximum number of file descriptors |
||
437 | the current process could possibly have. */ |
||
438 | extern int getdtablesize __P ((void)); |
||
439 | |||
440 | /* Make a link to FROM named TO. */ |
||
441 | extern int link __P ((__const char *__from, __const char *__to)); |
||
442 | |||
443 | #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED |
||
444 | /* Make a symbolic link to FROM named TO. */ |
||
445 | extern int symlink __P ((__const char *__from, __const char *__to)); |
||
446 | |||
447 | /* Read the contents of the symbolic link PATH into no more than |
||
448 | LEN bytes of BUF. The contents are not null-terminated. |
||
449 | Returns the number of characters read, or -1 for errors. */ |
||
450 | extern int readlink __P ((__const char *__path, char *__buf, size_t __len)); |
||
451 | #endif /* Use BSD. */ |
||
452 | |||
453 | /* Remove the link NAME. */ |
||
454 | extern int unlink __P ((__const char *__name)); |
||
455 | |||
456 | /* Remove the directory PATH. */ |
||
457 | extern int rmdir __P ((__const char *__path)); |
||
458 | |||
459 | /* ??? */ |
||
460 | char *mktemp __P((char *)); |
||
461 | |||
462 | extern __inline__ pid_t getpid(void) |
||
463 | { |
||
464 | return 0; |
||
465 | } |
||
466 | |||
467 | extern long pathconf(const char *path, int name); |
||
468 | extern long fpathconf(int filedes, int name); |
||
469 | |||
80 | pj | 470 | __END_DECLS |
2 | pj | 471 | #endif /* !__UNISTD_H_ */ |