123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- #ifndef _LD_SYSCALL_H_
- #define _LD_SYSCALL_H_
- #include <dl-syscalls.h>
- #define _SYS_MMAN_H 1
- #include <bits/mman.h>
- #define kernel_stat stat
- #include <bits/kernel_stat.h>
- #include <bits/kernel_types.h>
- #define O_RDONLY 00
- #define O_WRONLY 01
- #define O_RDWR 02
- #define O_CREAT 0100
- #define S_IFMT 0170000
- #define S_IFDIR 0040000
- #define S_IFCHR 0020000
- #define S_IFBLK 0060000
- #define S_IFREG 0100000
- #define S_IFIFO 0010000
- #define S_IFLNK 0120000
- #define S_IFSOCK 0140000
- #define S_ISUID 04000
- #define S_ISGID 02000
- #define S_ISVTX 01000
- #define S_IREAD 0400
- #define S_IWRITE 0200
- #define S_IEXEC 0100
- #define __NR__dl_exit __NR_exit
- static inline _syscall1(void, _dl_exit, int, status);
- #define __NR__dl_close __NR_close
- static inline _syscall1(int, _dl_close, int, fd);
- #define __NR__dl_open __NR_open
- static inline _syscall3(int, _dl_open, const char *, fn, int, flags,
- __kernel_mode_t, mode);
- #define __NR__dl_write __NR_write
- static inline _syscall3(unsigned long, _dl_write, int, fd,
- const void *, buf, unsigned long, count);
- #define __NR__dl_read __NR_read
- static inline _syscall3(unsigned long, _dl_read, int, fd,
- const void *, buf, unsigned long, count);
- #define __NR__dl_mprotect __NR_mprotect
- static inline _syscall3(int, _dl_mprotect, const void *, addr,
- unsigned long, len, int, prot);
- #define __NR__dl_stat __NR_stat
- static inline _syscall2(int, _dl_stat, const char *, file_name,
- struct stat *, buf);
- #define __NR__dl_fstat __NR_fstat
- static inline _syscall2(int, _dl_fstat, int, fd, struct stat *, buf);
- #define __NR__dl_munmap __NR_munmap
- static inline _syscall2(int, _dl_munmap, void *, start, unsigned long, length);
- #ifdef __NR_getxuid
- # define __NR_getuid __NR_getxuid
- #endif
- #define __NR__dl_getuid __NR_getuid
- static inline _syscall0(uid_t, _dl_getuid);
- #ifndef __NR_geteuid
- # define __NR_geteuid __NR_getuid
- #endif
- #define __NR__dl_geteuid __NR_geteuid
- static inline _syscall0(uid_t, _dl_geteuid);
- #ifdef __NR_getxgid
- # define __NR_getgid __NR_getxgid
- #endif
- #define __NR__dl_getgid __NR_getgid
- static inline _syscall0(gid_t, _dl_getgid);
- #ifndef __NR_getegid
- # define __NR_getegid __NR_getgid
- #endif
- #define __NR__dl_getegid __NR_getegid
- static inline _syscall0(gid_t, _dl_getegid);
- #ifdef __NR_getxpid
- # define __NR_getpid __NR_getxpid
- #endif
- #define __NR__dl_getpid __NR_getpid
- static inline _syscall0(gid_t, _dl_getpid);
- #define __NR__dl_readlink __NR_readlink
- static inline _syscall3(int, _dl_readlink, const char *, path, char *, buf,
- size_t, bufsiz);
- #ifdef __UCLIBC_HAS_SSP__
- # include <sys/time.h>
- # define __NR__dl_gettimeofday __NR_gettimeofday
- static inline _syscall2(int, _dl_gettimeofday, struct timeval *, tv,
- # ifdef __USE_BSD
- struct timezone *, tz);
- # else
- void *, tz);
- # endif
- #endif
- #if (defined(__UCLIBC_MMAP_HAS_6_ARGS__) && defined(__NR_mmap)) || !defined(__NR_mmap2)
- # define _dl_MAX_ERRNO 4096
- # define _dl_mmap_check_error(__res) \
- (((long)__res) < 0 && ((long)__res) >= -_dl_MAX_ERRNO)
- #else
- # define MAP_FAILED ((void *) -1)
- # define _dl_mmap_check_error(X) (((void *)X) == MAP_FAILED)
- #endif
- #if defined(__UCLIBC_MMAP_HAS_6_ARGS__) && defined(__NR_mmap)
- # define __NR__dl_mmap __NR_mmap
- static inline _syscall6(void *, _dl_mmap, void *, start, size_t, length,
- int, prot, int, flags, int, fd, off_t, offset);
- #elif defined(__NR_mmap2)
- # define __NR___syscall_mmap2 __NR_mmap2
- static inline _syscall6(__ptr_t, __syscall_mmap2, __ptr_t, addr, size_t, len,
- int, prot, int, flags, int, fd, off_t, offset);
- #ifndef MMAP2_PAGE_SHIFT
- # define MMAP2_PAGE_SHIFT 12
- #endif
- static inline void * _dl_mmap(void * addr, unsigned long size, int prot,
- int flags, int fd, unsigned long offset)
- {
- if (offset & ((1 << MMAP2_PAGE_SHIFT) - 1))
- return MAP_FAILED;
- return __syscall_mmap2(addr, size, prot, flags,
- fd, (off_t) (offset >> MMAP2_PAGE_SHIFT));
- }
- #elif defined(__NR_mmap)
- # define __NR__dl_mmap_real __NR_mmap
- static inline _syscall1(void *, _dl_mmap_real, unsigned long *, buffer);
- static inline void * _dl_mmap(void * addr, unsigned long size, int prot,
- int flags, int fd, unsigned long offset)
- {
- unsigned long buffer[6];
- buffer[0] = (unsigned long) addr;
- buffer[1] = (unsigned long) size;
- buffer[2] = (unsigned long) prot;
- buffer[3] = (unsigned long) flags;
- buffer[4] = (unsigned long) fd;
- buffer[5] = (unsigned long) offset;
- return (void *) _dl_mmap_real(buffer);
- }
- #else
- # error "Your architecture doesn't seem to provide mmap() !?"
- #endif
- #endif
|