[uClibc-cvs] uClibc/ldso/include ld_syscall.h,1.2,1.3

Erik Andersen andersen at uclibc.org
Tue Feb 10 06:50:31 UTC 2004


Update of /var/cvs/uClibc/ldso/include
In directory nail:/tmp/cvs-serv22093/include

Modified Files:
	ld_syscall.h 
Log Message:
Fixup the definition of _dl_open, and move some bits back where they were,
till I properly finish the next step in my evil plan.


Index: ld_syscall.h
===================================================================
RCS file: /var/cvs/uClibc/ldso/include/ld_syscall.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- ld_syscall.h	7 Feb 2004 10:40:15 -0000	1.2
+++ ld_syscall.h	10 Feb 2004 06:50:28 -0000	1.3
@@ -4,14 +4,21 @@
 /* Pull in the arch specific syscall implementation */
 #include <ld_syscalls.h>
 /*  For MAP_ANONYMOUS -- differs between platforms */
-#include <asm/mman.h>			
+#include <asm/mman.h>
 /* Pull in whatever this particular arch's kernel thinks the kernel version of
  * struct stat should look like.  It turns out that each arch has a different
  * opinion on the subject, and different kernel revs use different names... */
 #define kernel_stat stat
 #include <bits/kernel_stat.h>
+#include <bits/kernel_types.h>
 
 
+/* _dl_open() parameters */
+#define O_RDONLY        0x0000
+#define O_WRONLY	     01
+#define O_RDWR		     02
+#define O_CREAT		   0100
+
 /* Encoding of the file mode.  */
 #define	S_IFMT		0170000	/* These bits determine file type.  */
 
@@ -25,7 +32,6 @@
 #define	S_IFSOCK	0140000	/* Socket.  */
 
 /* Protection bits.  */
-
 #define	S_ISUID		04000	/* Set user ID on execution.  */
 #define	S_ISGID		02000	/* Set group ID on execution.  */
 #define	S_ISVTX		01000	/* Save swapped text after use (sticky).  */
@@ -33,6 +39,19 @@
 #define	S_IWRITE	0200	/* Write by owner.  */
 #define	S_IEXEC		0100	/* Execute by owner.  */
 
+/* Stuff for _dl_mmap */
+#if 0
+#define MAP_FAILED	((void *) -1)
+#define _dl_mmap_check_error(X) (((void *)X) == MAP_FAILED)
+#else
+#ifndef _dl_MAX_ERRNO
+#define _dl_MAX_ERRNO 4096
+#endif
+#define _dl_mmap_check_error(__res)     \
+        (((int)__res) < 0 && ((int)__res) >= -_dl_MAX_ERRNO)
+#endif
+
+
 
 /* Here are the definitions for some syscalls that are used
    by the dynamic linker.  The idea is that we want to be able
@@ -40,79 +59,29 @@
    we use our own version here.  Note that we cannot assume any
    dynamic linking at all, so we cannot return any error codes.
    We just punt if there is an error. */
-
-
 #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);
 
-
-#if defined(__powerpc__) || defined(__mips__) || defined(__sh__)
-/* PowerPC, MIPS and SuperH have a different calling convention for 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);
-#else
-#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);
-}
-#endif
-
-#ifndef _dl_MAX_ERRNO
-#define _dl_MAX_ERRNO 4096
-#endif
-#define _dl_mmap_check_error(__res)	\
-	(((int)__res) < 0 && ((int)__res) >= -_dl_MAX_ERRNO)
-#ifndef MAP_ANONYMOUS
-#ifdef __sparc__
-#define MAP_ANONYMOUS 0x20
-#else
-#error MAP_ANONYMOUS not defined and suplementary value not known
-#endif
-#endif
-
-
 #define __NR__dl_open __NR_open
-#define O_RDONLY        0x0000
-#define O_WRONLY	     01
-#define O_RDWR		     02
-#define O_CREAT		   0100	/* not fcntl */
-static inline _syscall2(int, _dl_open, const char *, fn, int, flags);
+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, 
+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, 
+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_munmap __NR_munmap
 static inline _syscall2(int, _dl_munmap, void *, start, unsigned long, length);
 
@@ -134,5 +103,30 @@
 #define __NR__dl_readlink __NR_readlink
 static inline _syscall3(int, _dl_readlink, const char *, path, char *, buf, size_t, bufsiz);
 
+#if defined(__powerpc__) || defined(__mips__) || defined(__sh__)
+/* PowerPC, MIPS and SuperH have a different calling convention for 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);
+#else
+#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);
+}
+#endif
+
+
 #endif /* _LD_SYSCALL_H_ */
 




More information about the uClibc-cvs mailing list