[uClibc-cvs] uClibc/ldso/include dl-syscall.h,1.4,1.5

Erik Andersen andersen at uclibc.org
Fri Mar 19 12:03:32 UTC 2004


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

Modified Files:
	dl-syscall.h 
Log Message:
Based on a patch from Alexandre Oliva, allow uClibc to compile
with __NR_mmap is not available (i.e. only __NR_mmap2)


Index: dl-syscall.h
===================================================================
RCS file: /var/cvs/uClibc/ldso/include/dl-syscall.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- a/dl-syscall.h	10 Feb 2004 09:26:46 -0000	1.4
+++ b/dl-syscall.h	19 Mar 2004 12:03:30 -0000	1.5
@@ -103,6 +103,7 @@
 #define __NR__dl_readlink __NR_readlink
 static inline _syscall3(int, _dl_readlink, const char *, path, char *, buf, size_t, bufsiz);
 
+#ifdef __NR_mmap
 #if defined(__powerpc__) || defined(__mips__) || defined(__sh__)
 /* PowerPC, MIPS and SuperH have a different calling convention for mmap(). */
 #define __NR__dl_mmap __NR_mmap
@@ -126,7 +127,21 @@
 	return (void *) _dl_mmap_real(buffer);
 }
 #endif
-
+#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);
+/*always 12, even on architectures where PAGE_SHIFT != 12 */
+#define MMAP2_PAGE_SHIFT 12
+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)));
+}
+#endif
 
 #endif /* _LD_SYSCALL_H_ */
 




More information about the uClibc-cvs mailing list