/** @file | |
Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR> | |
This program and the accompanying materials are licensed and made available under | |
the terms and conditions of the BSD License that accompanies this distribution. | |
The full text of the license may be found at | |
http://opensource.org/licenses/bsd-license. | |
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
**/ | |
#ifndef _UNISTD_H_ | |
#define _UNISTD_H_ | |
//#include <machine/ansi.h> | |
//#include <machine/int_types.h> | |
//#include <sys/featuretest.h> | |
//#include <sys/types.h> | |
#include <sys/unistd.h> | |
#include <sys/EfiSysCall.h> | |
#define F_ULOCK 0 | |
#define F_LOCK 1 | |
#define F_TLOCK 2 | |
#define F_TEST 3 | |
/* access function */ | |
#define F_OK 0 /* test for existence of file */ | |
#define X_OK 0x01 /* test for execute or search permission */ | |
#define W_OK 0x02 /* test for write permission */ | |
#define R_OK 0x04 /* test for read permission */ | |
__BEGIN_DECLS | |
int dup(int); | |
int rename(const char *, const char *); | |
/* Functions implemented for compatibility. */ | |
int getopt(int, char * const [], const char *); | |
extern char *optarg; /* getopt(3) external variables */ | |
extern int optind; | |
pid_t getpgrp(void); | |
pid_t tcgetpgrp(int); | |
char *getpass(const char *); | |
int usleep(useconds_t); | |
unsigned int sleep(unsigned int); | |
char *basename(char *path); | |
#ifndef GETCWD_DECLARED | |
/** Gets the current working directory. | |
The getcwd() function shall place an absolute pathname of the current | |
working directory in the array pointed to by buf, and return buf. The | |
pathname copied to the array shall contain no components that are | |
symbolic links. The size argument is the size in bytes of the character | |
array pointed to by the buf argument. | |
@param[in,out] Buf The buffer to fill. | |
@param[in] BufSize The number of bytes in buffer. | |
@retval NULL The function failed. | |
@retval NULL Buf was NULL. | |
@retval NULL Size was 0. | |
@return buf The function completed successfully. See errno for info. | |
**/ | |
char *getcwd(char *Buf, size_t BufSize); | |
#define GETCWD_DECLARED | |
#endif | |
#ifndef CHDIR_DECLARED | |
/** Change the current working directory. | |
The chdir() function shall cause the directory named by the pathname | |
pointed to by the path argument to become the current working directory; | |
that is, the starting point for path searches for pathnames not beginning | |
with '/'. | |
@param[in] Path The new path to set. | |
@todo Add non-shell CWD changing. | |
**/ | |
int chdir(const char *Path); | |
#define CHDIR_DECLARED | |
#endif | |
/** Determine accessibility of a file. | |
The access() function checks the file, named by the pathname pointed to by | |
the Path argument, for accessibility according to the bit pattern contained | |
in Mode. | |
The value of Mode is either the bitwise-inclusive OR of the access | |
permissions to be checked (R_OK, W_OK, X_OK) or the existence test (F_OK). | |
If Path ends in '/' or '\\', the target must be a directory, otherwise it doesn't matter. | |
A file is executable if it is NOT a directory and it ends in ".efi". | |
@param[in] Path Path or name of the file to be checked. | |
@param[in] Mode Access permissions to check for. | |
@retval 0 Successful completion. | |
@retval -1 File is not accessible with the given Mode. The error condition | |
is indicated by errno. Values of errno specific to the access | |
function include: EACCES, ENOENT, ENOTDIR, ENAMETOOLONG | |
**/ | |
int access(const char *Path, int Mode); | |
pid_t getpid(void); | |
// Networking | |
long gethostid(void); | |
int gethostname(char *, size_t); | |
int getdomainname(char *, size_t); | |
int setdomainname(const char *, size_t); | |
int sethostid(long); | |
int sethostname(const char *, size_t); | |
/* Stub functions implemented for porting ease. | |
These functions always fail or return NULL. | |
*/ | |
__aconst char *getlogin(void); | |
pid_t fork(void); | |
uid_t getuid(void); | |
// For Future implementation | |
ssize_t pread(int, void *, size_t, off_t); | |
ssize_t pwrite(int, const void *, size_t, off_t); | |
int syscall(int, ...); | |
#if 0 // The following functions are not implemented | |
__dead void _exit(int) __attribute__((__noreturn__)); | |
unsigned int alarm(unsigned int); | |
int chown(const char *, uid_t, gid_t); | |
size_t confstr(int, char *, size_t); | |
int execl(const char *, const char *, ...); | |
int execle(const char *, const char *, ...); | |
int execlp(const char *, const char *, ...); | |
int execv(const char *, char * const *); | |
int execve(const char *, char * const *, char * const *); | |
int execvp(const char *, char * const *); | |
long fpathconf(int, int); | |
gid_t getegid(void); | |
uid_t geteuid(void); | |
gid_t getgid(void); | |
int getgroups(int, gid_t []); | |
pid_t getppid(void); | |
int link(const char *, const char *); | |
long pathconf(const char *, int); | |
int pause(void); | |
int pipe(int *); | |
int setgid(gid_t); | |
int setpgid(pid_t, pid_t); | |
pid_t setsid(void); | |
int setuid(uid_t); | |
long sysconf(int); | |
int tcsetpgrp(int, pid_t); | |
__aconst char *ttyname(int); | |
extern int opterr; | |
extern int optopt; | |
extern int optreset; | |
extern char *suboptarg; | |
int setegid(gid_t); | |
int seteuid(uid_t); | |
int fdatasync(int); | |
int fsync(int); | |
int ttyname_r(int, char *, size_t); | |
int chroot(const char *); | |
int nice(int); | |
__aconst char *crypt(const char *, const char *); | |
int encrypt(char *, int); | |
pid_t getsid(pid_t); | |
#ifndef intptr_t | |
typedef __intptr_t intptr_t; | |
#define intptr_t __intptr_t | |
#endif | |
int brk(void *); | |
int fchdir(int); | |
int fchown(int, uid_t, gid_t); | |
int getdtablesize(void); | |
__pure int getpagesize(void); /* legacy */ | |
pid_t getpgid(pid_t); | |
int lchown(const char *, uid_t, gid_t); | |
int lockf(int, int, off_t); | |
ssize_t readlink(const char * __restrict, char * __restrict, size_t); | |
void *sbrk(intptr_t); | |
int setregid(gid_t, gid_t); | |
int setreuid(uid_t, uid_t); | |
void swab(const void *, void *, size_t); | |
int symlink(const char *, const char *); | |
void sync(void); | |
useconds_t ualarm(useconds_t, useconds_t); | |
pid_t vfork(void) __RENAME(__vfork14); | |
/* | |
* Implementation-defined extensions | |
*/ | |
int acct(const char *); | |
int closefrom(int); | |
int des_cipher(const char *, char *, long, int); | |
int des_setkey(const char *); | |
void endusershell(void); | |
int exect(const char *, char * const *, char * const *); | |
int fchroot(int); | |
int fsync_range(int, int, off_t, off_t); | |
int getgrouplist(const char *, gid_t, gid_t *, int *); | |
int getgroupmembership(const char *, gid_t, gid_t *, int, int *); | |
mode_t getmode(const void *, mode_t); | |
int getsubopt(char **, char * const *, char **); | |
__aconst char *getusershell(void); | |
int initgroups(const char *, gid_t); | |
int iruserok(uint32_t, int, const char *, const char *); | |
int issetugid(void); | |
int nfssvc(int, void *); | |
int profil(char *, size_t, u_long, u_int); | |
void psignal(unsigned int, const char *); | |
int rcmd(char **, int, const char *, const char *, const char *, int *); | |
int revoke(const char *); | |
int rresvport(int *); | |
int ruserok(const char *, int, const char *, const char *); | |
int setgroups(int, const gid_t *); | |
int setlogin(const char *); | |
void *setmode(const char *); | |
int setrgid(gid_t); | |
int setruid(uid_t); | |
void setusershell(void); | |
void strmode(mode_t, char *); | |
__aconst char *strsignal(int); | |
int swapctl(int, void *, int); | |
quad_t __syscall(quad_t, ...); | |
int undelete(const char *); | |
int rcmd_af(char **, int, const char *, const char *, const char *, int *, int); | |
int rresvport_af(int *, int); | |
int iruserok_sa(const void *, int, int, const char *, const char *); | |
#endif /* Unimplemented functions. */ | |
__END_DECLS | |
#endif /* !_UNISTD_H_ */ |