~martin-decky/helenos/rcu

« back to all changes in this revision

Viewing changes to uspace/lib/posix/unistd.h

  • Committer: Jakub Jermar
  • Date: 2011-09-07 22:19:24 UTC
  • mfrom: (1113.1.41 devel)
  • Revision ID: jakub@jermar.eu-20110907221924-cfgktigu4e8l0uyv
Merge from lp:~helenos-posix/helenos/devel.

* Petr Koupy's port of binutils.
* Jiri Zarevucky's port of pcc.
* Petr and Jiri's libposix library.
* Changes needed to make it all work together.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (c) 2011 Jiri Zarevucky
 
3
 * Copyright (c) 2011 Petr Koupy
 
4
 * All rights reserved.
 
5
 *
 
6
 * Redistribution and use in source and binary forms, with or without
 
7
 * modification, are permitted provided that the following conditions
 
8
 * are met:
 
9
 *
 
10
 * - Redistributions of source code must retain the above copyright
 
11
 *   notice, this list of conditions and the following disclaimer.
 
12
 * - Redistributions in binary form must reproduce the above copyright
 
13
 *   notice, this list of conditions and the following disclaimer in the
 
14
 *   documentation and/or other materials provided with the distribution.
 
15
 * - The name of the author may not be used to endorse or promote products
 
16
 *   derived from this software without specific prior written permission.
 
17
 *
 
18
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 
19
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 
20
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 
21
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 
22
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 
23
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 
24
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 
25
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 
26
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 
27
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
28
 */
 
29
 
 
30
/** @addtogroup libposix
 
31
 * @{
 
32
 */
 
33
/** @file Miscellaneous standard definitions.
 
34
 */
 
35
 
 
36
#ifndef POSIX_UNISTD_H_
 
37
#define POSIX_UNISTD_H_
 
38
 
 
39
#include "libc/unistd.h"
 
40
#include "sys/types.h"
 
41
 
 
42
/* Process Termination */
 
43
#define _exit exit
 
44
 
 
45
/* Option Arguments */
 
46
extern char *optarg;
 
47
extern int optind, opterr, optopt;
 
48
extern int getopt(int, char * const [], const char *);
 
49
 
 
50
/* Environment */
 
51
extern char **posix_environ;
 
52
 
 
53
/* Login Information */
 
54
extern char *posix_getlogin(void);
 
55
extern int posix_getlogin_r(char *name, size_t namesize);
 
56
 
 
57
/* Identifying Terminals */
 
58
extern int posix_isatty(int fd);
 
59
 
 
60
/* Working Directory */
 
61
extern char *posix_getcwd(char *buf, size_t size);
 
62
extern int posix_chdir(const char *path);
 
63
 
 
64
/* Query Memory Parameters */
 
65
extern int posix_getpagesize(void);
 
66
 
 
67
/* Process Identification */
 
68
extern posix_pid_t posix_getpid(void);
 
69
extern posix_uid_t posix_getuid(void);
 
70
extern posix_gid_t posix_getgid(void);
 
71
 
 
72
/* File Manipulation */
 
73
extern int posix_close(int fildes);
 
74
extern ssize_t posix_read(int fildes, void *buf, size_t nbyte);
 
75
extern ssize_t posix_write(int fildes, const void *buf, size_t nbyte);
 
76
extern int posix_fsync(int fildes);
 
77
extern int posix_ftruncate(int fildes, posix_off_t length);
 
78
extern int posix_rmdir(const char *path);
 
79
extern int posix_unlink(const char *path);
 
80
extern int posix_dup(int fildes);
 
81
extern int posix_dup2(int fildes, int fildes2);
 
82
 
 
83
/* Standard Streams */
 
84
#undef STDIN_FILENO
 
85
#define STDIN_FILENO (fileno(stdin))
 
86
#undef STDOUT_FILENO
 
87
#define STDOUT_FILENO (fileno(stdout))
 
88
#undef STDERR_FILENO
 
89
#define STDERR_FILENO (fileno(stderr))
 
90
 
 
91
/* File Accessibility */
 
92
#undef F_OK
 
93
#undef X_OK
 
94
#undef W_OK
 
95
#undef R_OK
 
96
#define F_OK 0 /* Test for existence. */
 
97
#define X_OK 1 /* Test for execute permission. */
 
98
#define W_OK 2 /* Test for write permission. */
 
99
#define R_OK 4 /* Test for read permission. */
 
100
extern int posix_access(const char *path, int amode);
 
101
 
 
102
/* System Parameters */
 
103
enum {
 
104
        _SC_PHYS_PAGES,
 
105
        _SC_AVPHYS_PAGES,
 
106
        _SC_PAGESIZE,
 
107
        _SC_CLK_TCK
 
108
};
 
109
extern long posix_sysconf(int name);
 
110
 
 
111
/* Path Configuration Parameters */
 
112
enum {
 
113
        _PC_2_SYMLINKS,
 
114
        _PC_ALLOC_SIZE_MIN,
 
115
        _PC_ASYNC_IO,
 
116
        _PC_CHOWN_RESTRICTED,
 
117
        _PC_FILESIZEBITS,
 
118
        _PC_LINK_MAX,
 
119
        _PC_MAX_CANON,
 
120
        _PC_MAX_INPUT,
 
121
        _PC_NAME_MAX,
 
122
        _PC_NO_TRUNC,
 
123
        _PC_PATH_MAX,
 
124
        _PC_PIPE_BUF,
 
125
        _PC_PRIO_IO,
 
126
        _PC_REC_INCR_XFER_SIZE,
 
127
        _PC_REC_MIN_XFER_SIZE,
 
128
        _PC_REC_XFER_ALIGN,
 
129
        _PC_SYMLINK_MAX,
 
130
        _PC_SYNC_IO,
 
131
        _PC_VDISABLE
 
132
};
 
133
extern long posix_pathconf(const char *path, int name);
 
134
 
 
135
/* Creating a Process */
 
136
extern posix_pid_t posix_fork(void);
 
137
 
 
138
/* Executing a File */
 
139
extern int posix_execv(const char *path, char *const argv[]);
 
140
extern int posix_execvp(const char *file, char *const argv[]);
 
141
 
 
142
/* Creating a Pipe */
 
143
extern int posix_pipe(int fildes[2]);
 
144
 
 
145
#ifndef LIBPOSIX_INTERNAL
 
146
        #define environ posix_environ
 
147
 
 
148
        #define getlogin posix_getlogin
 
149
        #define getlogin_r posix_getlogin_r
 
150
 
 
151
        #define getcwd posix_getcwd
 
152
        #define chdir posix_chdir
 
153
 
 
154
        #define isatty posix_isatty
 
155
 
 
156
        #undef getpagesize
 
157
        #define getpagesize posix_getpagesize
 
158
 
 
159
        #define getpid posix_getpid
 
160
        #define getuid posix_getuid
 
161
        #define getgid posix_getgid
 
162
 
 
163
        #define close posix_close
 
164
        #define read posix_read
 
165
        #define write posix_write
 
166
        #define fsync posix_fsync
 
167
        #define ftruncate posix_ftruncate
 
168
        #define rmdir posix_rmdir
 
169
        #define unlink posix_unlink
 
170
        #define dup posix_dup
 
171
        #define dup2 posix_dup2
 
172
 
 
173
        #define access posix_access
 
174
 
 
175
        #define sysconf posix_sysconf
 
176
 
 
177
        #define pathconf posix_pathconf
 
178
 
 
179
        #define fork posix_fork
 
180
 
 
181
        #define execv posix_execv
 
182
        #define execvp posix_execvp
 
183
 
 
184
        #define pipe posix_pipe
 
185
#endif
 
186
 
 
187
#endif /* POSIX_UNISTD_H_ */
 
188
 
 
189
/** @}
 
190
 */