libaio in programming/library
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
Index: b/harness/cases/12.t
|
||||
===================================================================
|
||||
--- a/harness/cases/12.t
|
||||
+++ b/harness/cases/12.t
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
int test_main(void)
|
||||
{
|
||||
- int res, status;
|
||||
+ int status;
|
||||
pid_t pid;
|
||||
sigset_t set;
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
if (pid == 0)
|
||||
test_child();
|
||||
|
||||
- res = waitpid(pid, &status, 0);
|
||||
+ waitpid(pid, &status, 0);
|
||||
|
||||
if (WIFEXITED(status)) {
|
||||
int failed = (WEXITSTATUS(status) != 0);
|
||||
Index: b/harness/cases/14.t
|
||||
===================================================================
|
||||
--- a/harness/cases/14.t
|
||||
+++ b/harness/cases/14.t
|
||||
@@ -59,7 +59,7 @@
|
||||
/* from 12.t */
|
||||
int test_main(void)
|
||||
{
|
||||
- int res, status;
|
||||
+ int status;
|
||||
pid_t pid;
|
||||
sigset_t set;
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
if (pid == 0)
|
||||
test_child();
|
||||
|
||||
- res = waitpid(pid, &status, 0);
|
||||
+ waitpid(pid, &status, 0);
|
||||
|
||||
if (WIFEXITED(status)) {
|
||||
int failed = (WEXITSTATUS(status) != 0);
|
||||
@@ -0,0 +1,26 @@
|
||||
--- src/Makefile.orig 2006-07-09 19:46:41.000000000 -0700
|
||||
+++ src/Makefile 2006-07-09 19:51:00.000000000 -0700
|
||||
@@ -2,11 +2,10 @@
|
||||
includedir=$(prefix)/include
|
||||
libdir=$(prefix)/lib
|
||||
|
||||
-ARCH := $(shell uname -m | sed -e s/i.86/i386/)
|
||||
-CFLAGS := -nostdlib -nostartfiles -Wall -I. -g -fomit-frame-pointer -O2 -fPIC
|
||||
-SO_CFLAGS=-shared $(CFLAGS)
|
||||
+CFLAGS += -nostdlib -nostartfiles -Wall -I. -fPIC
|
||||
+SO_CFLAGS=-shared $(CFLAGS)
|
||||
L_CFLAGS=$(CFLAGS)
|
||||
-LINK_FLAGS=
|
||||
+LINK_FLAGS=-lgcc -lrt $(LDFLAGS)
|
||||
|
||||
soname=libaio.so.1
|
||||
minor=0
|
||||
@@ -48,7 +47,7 @@
|
||||
ranlib libaio.a
|
||||
|
||||
$(libname): $(libaio_sobjs) libaio.map
|
||||
- $(CC) $(SO_CFLAGS) -Wl,--version-script=libaio.map -Wl,-soname=$(soname) -o $@ $(libaio_sobjs) $(LINK_FLAGS)
|
||||
+ $(CC) $(SO_CFLAGS) -Wl,--version-script=libaio.map -Wl,-soname,$(soname) -o $@ $(libaio_sobjs) $(LINK_FLAGS)
|
||||
|
||||
install: $(all_targets)
|
||||
install -D -m 644 libaio.h $(includedir)/libaio.h
|
||||
@@ -0,0 +1,17 @@
|
||||
--- a/src/Makefile
|
||||
+++ b/src/Makefile
|
||||
@@ -42,10 +42,12 @@
|
||||
$(CC) $(L_CFLAGS) -c -o $@ $<
|
||||
|
||||
|
||||
+AR ?= ar
|
||||
+RANLIB ?= ranlib
|
||||
libaio.a: $(libaio_objs)
|
||||
rm -f libaio.a
|
||||
- ar r libaio.a $^
|
||||
- ranlib libaio.a
|
||||
+ $(AR) r libaio.a $^
|
||||
+ $(RANLIB) libaio.a
|
||||
|
||||
$(libname): $(libaio_sobjs) libaio.map
|
||||
$(CC) $(SO_CFLAGS) -Wl,--version-script=libaio.map -Wl,-soname,$(soname) -o $@ $(libaio_sobjs) $(LINK_FLAGS)
|
||||
@@ -0,0 +1,62 @@
|
||||
From 5e96c73d5dfbdea8d0be82b7f3fc8d6735e5dfa7 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Frysinger <vapier@gentoo.org>
|
||||
Date: Sun, 17 Jan 2010 17:07:48 -0500
|
||||
Subject: [PATCH] add a generic syscall() fallback
|
||||
|
||||
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
||||
---
|
||||
src/syscall-generic.h | 29 +++++++++++++++++++++++++++++
|
||||
src/syscall.h | 3 ++-
|
||||
2 files changed, 31 insertions(+), 1 deletions(-)
|
||||
create mode 100644 src/syscall-generic.h
|
||||
|
||||
diff --git a/src/syscall-generic.h b/src/syscall-generic.h
|
||||
new file mode 100644
|
||||
index 0000000..24d7c7c
|
||||
--- /dev/null
|
||||
+++ b/src/syscall-generic.h
|
||||
@@ -0,0 +1,29 @@
|
||||
+#include <errno.h>
|
||||
+#include <unistd.h>
|
||||
+#include <sys/syscall.h>
|
||||
+
|
||||
+#define _body_io_syscall(sname, args...) \
|
||||
+{ \
|
||||
+ int ret = syscall(__NR_##sname, ## args); \
|
||||
+ return ret < 0 ? -errno : ret; \
|
||||
+}
|
||||
+
|
||||
+#define io_syscall1(type,fname,sname,type1,arg1) \
|
||||
+type fname(type1 arg1) \
|
||||
+_body_io_syscall(sname, (long)arg1)
|
||||
+
|
||||
+#define io_syscall2(type,fname,sname,type1,arg1,type2,arg2) \
|
||||
+type fname(type1 arg1,type2 arg2) \
|
||||
+_body_io_syscall(sname, (long)arg1, (long)arg2)
|
||||
+
|
||||
+#define io_syscall3(type,fname,sname,type1,arg1,type2,arg2,type3,arg3) \
|
||||
+type fname(type1 arg1,type2 arg2,type3 arg3) \
|
||||
+_body_io_syscall(sname, (long)arg1, (long)arg2, (long)arg3)
|
||||
+
|
||||
+#define io_syscall4(type,fname,sname,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
|
||||
+type fname (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
|
||||
+_body_io_syscall(sname, (long)arg1, (long)arg2, (long)arg3, (long)arg4)
|
||||
+
|
||||
+#define io_syscall5(type,fname,sname,type1,arg1,type2,arg2,type3,arg3,type4,arg4, type5,arg5) \
|
||||
+type fname (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \
|
||||
+_body_io_syscall(sname, (long)arg1, (long)arg2, (long)arg3, (long)arg4, (long)arg5)
|
||||
diff --git a/src/syscall.h b/src/syscall.h
|
||||
index 78becfe..d954af0 100644
|
||||
--- a/src/syscall.h
|
||||
+++ b/src/syscall.h
|
||||
@@ -25,5 +25,6 @@
|
||||
#elif defined(__arm__)
|
||||
#include "syscall-arm.h"
|
||||
#else
|
||||
-#error "add syscall-arch.h"
|
||||
+#warning "using generic syscall method"
|
||||
+#include "syscall-generic.h"
|
||||
#endif
|
||||
--
|
||||
1.7.3.1
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
Do not ignore return value of ftruncate(): testcases are compiled with -Werror,
|
||||
and ftruncate is declared with attribute warn_unused_result.
|
||||
--- harness/cases/8.t.orig 2012-03-09 16:40:04.074168070 +0100
|
||||
+++ harness/cases/8.t 2012-03-09 16:40:57.777278646 +0100
|
||||
@@ -9,12 +9,13 @@
|
||||
{
|
||||
long long min = 0, max = 9223372036854775807LL;
|
||||
char c = 0;
|
||||
+ int ret;
|
||||
|
||||
while (max - min > 1) {
|
||||
if (pwrite64(fd, &c, 1, (min + max) / 2) == -1)
|
||||
max = (min + max) / 2;
|
||||
else {
|
||||
- ftruncate(fd, 0);
|
||||
+ ret = ftruncate(fd, 0); assert(ret == 0);
|
||||
min = (min + max) / 2;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
diff --git a/src/libaio.h b/src/libaio.h
|
||||
index ffe8259..4a6c9fb 100644
|
||||
--- a/src/libaio.h
|
||||
+++ b/src/libaio.h
|
||||
@@ -49,40 +49,34 @@ typedef enum io_iocb_cmd {
|
||||
IO_CMD_PWRITEV = 8,
|
||||
} io_iocb_cmd_t;
|
||||
|
||||
-#if defined(__i386__) /* little endian, 32 bits */
|
||||
+/* little endian, 32 bits */
|
||||
+#if defined(__i386__) || defined(__sh__) || defined(__bfin__) || \
|
||||
+ defined(__ARMEL__) || defined(__MIPSEL__) || defined(__cris__)
|
||||
#define PADDED(x, y) x; unsigned y
|
||||
#define PADDEDptr(x, y) x; unsigned y
|
||||
#define PADDEDul(x, y) unsigned long x; unsigned y
|
||||
+
|
||||
+/* little endian, 64 bits */
|
||||
#elif defined(__ia64__) || defined(__x86_64__) || defined(__alpha__)
|
||||
#define PADDED(x, y) x, y
|
||||
#define PADDEDptr(x, y) x
|
||||
#define PADDEDul(x, y) unsigned long x
|
||||
-#elif defined(__powerpc64__) /* big endian, 64 bits */
|
||||
-#define PADDED(x, y) unsigned y; x
|
||||
-#define PADDEDptr(x,y) x
|
||||
-#define PADDEDul(x, y) unsigned long x
|
||||
-#elif defined(__PPC__) /* big endian, 32 bits */
|
||||
-#define PADDED(x, y) unsigned y; x
|
||||
-#define PADDEDptr(x, y) unsigned y; x
|
||||
-#define PADDEDul(x, y) unsigned y; unsigned long x
|
||||
-#elif defined(__s390x__) /* big endian, 64 bits */
|
||||
+
|
||||
+/* big endian, 64 bits */
|
||||
+#elif defined(__powerpc64__) || defined(__s390x__) || \
|
||||
+ (defined(__sparc__) && defined(__arch64__))
|
||||
#define PADDED(x, y) unsigned y; x
|
||||
#define PADDEDptr(x,y) x
|
||||
#define PADDEDul(x, y) unsigned long x
|
||||
-#elif defined(__s390__) /* big endian, 32 bits */
|
||||
-#define PADDED(x, y) unsigned y; x
|
||||
-#define PADDEDptr(x, y) unsigned y; x
|
||||
-#define PADDEDul(x, y) unsigned y; unsigned long x
|
||||
-#elif defined(__arm__)
|
||||
-# if defined (__ARMEB__) /* big endian, 32 bits */
|
||||
+
|
||||
+/* big endian, 32 bits */
|
||||
+#elif defined(__PPC__) || defined(__s390__) || defined(__ARMEB__) || \
|
||||
+ defined(__MIPSEB__) || defined(__sparc__) || defined(__m68k__) || \
|
||||
+ defined(__hppa__) || defined(__frv__) || defined(__avr32__)
|
||||
#define PADDED(x, y) unsigned y; x
|
||||
#define PADDEDptr(x, y) unsigned y; x
|
||||
#define PADDEDul(x, y) unsigned y; unsigned long x
|
||||
-# else /* little endian, 32 bits */
|
||||
-#define PADDED(x, y) x; unsigned y
|
||||
-#define PADDEDptr(x, y) x; unsigned y
|
||||
-#define PADDEDul(x, y) unsigned long x; unsigned y
|
||||
-# endif
|
||||
+
|
||||
#else
|
||||
#error endian?
|
||||
#endif
|
||||
@@ -0,0 +1,63 @@
|
||||
http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=f5c071d93c9e6f57930bce56b1e4f009c160a826
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Properly load arguments 5 an 6 for x86-64 syscall
|
||||
Use asm ("r10") and asm ("r8") to load arguments 5 an 6 for x86-64
|
||||
syscall so that it works with both x32 and x86-64.
|
||||
|
||||
Received this patch from H.J. Lu <hjl.tools@gmail.com>
|
||||
|
||||
Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
|
||||
2011/12/02
|
||||
|
||||
--- libaio-0.3.109/src/syscall-x86_64.h.x32 2009-10-09 11:17:02.000000000 -0700
|
||||
+++ libaio-0.3.109/src/syscall-x86_64.h 2011-12-02 09:09:07.537603224 -0800
|
||||
@@ -1,8 +1,18 @@
|
||||
+#ifndef __NR_io_setup
|
||||
#define __NR_io_setup 206
|
||||
+#endif
|
||||
+#ifndef __NR_io_destroy
|
||||
#define __NR_io_destroy 207
|
||||
+#endif
|
||||
+#ifndef __NR_io_getevents
|
||||
#define __NR_io_getevents 208
|
||||
+#endif
|
||||
+#ifndef __NR_io_submit
|
||||
#define __NR_io_submit 209
|
||||
+#endif
|
||||
+#ifndef __NR_io_cancel
|
||||
#define __NR_io_cancel 210
|
||||
+#endif
|
||||
|
||||
#define __syscall_clobber "r11","rcx","memory"
|
||||
#define __syscall "syscall"
|
||||
@@ -42,10 +52,11 @@ return __res; \
|
||||
type fname (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
|
||||
{ \
|
||||
long __res; \
|
||||
-__asm__ volatile ("movq %5,%%r10 ;" __syscall \
|
||||
+register long __a4 asm ("r10") = (long) arg4; \
|
||||
+__asm__ volatile (__syscall \
|
||||
: "=a" (__res) \
|
||||
: "0" (__NR_##sname),"D" ((long)(arg1)),"S" ((long)(arg2)), \
|
||||
- "d" ((long)(arg3)),"g" ((long)(arg4)) : __syscall_clobber,"r10" ); \
|
||||
+ "d" ((long)(arg3)),"r" (__a4)); \
|
||||
return __res; \
|
||||
}
|
||||
|
||||
@@ -54,10 +65,11 @@ return __res; \
|
||||
type fname (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \
|
||||
{ \
|
||||
long __res; \
|
||||
-__asm__ volatile ("movq %5,%%r10 ; movq %6,%%r8 ; " __syscall \
|
||||
+register long __a4 asm ("r10") = (long) arg4; \
|
||||
+register long __a5 asm ("r8") = (long) arg5; \
|
||||
+__asm__ volatile ( __syscall \
|
||||
: "=a" (__res) \
|
||||
: "0" (__NR_##sname),"D" ((long)(arg1)),"S" ((long)(arg2)), \
|
||||
- "d" ((long)(arg3)),"g" ((long)(arg4)),"g" ((long)(arg5)) : \
|
||||
- __syscall_clobber,"r8","r10" ); \
|
||||
+ "d" ((long)(arg3)),"r" (__a4),"r" (__a5)); \
|
||||
return __res; \
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
diff -up libaio-0.3.107/src/Makefile.orig libaio-0.3.107/src/Makefile
|
||||
--- libaio-0.3.107/src/Makefile.orig 2009-01-20 10:07:31.520105235 -0500
|
||||
+++ libaio-0.3.107/src/Makefile 2009-01-20 10:08:51.199104930 -0500
|
||||
@@ -1,6 +1,7 @@
|
||||
prefix=/usr
|
||||
-includedir=$(prefix)/include
|
||||
-libdir=$(prefix)/lib
|
||||
+includedir=/usr/include
|
||||
+libdir=/usr/lib
|
||||
+usrlibdir=/usr/lib
|
||||
|
||||
ARCH := $(shell uname -m | sed -e s/i.86/i386/)
|
||||
CFLAGS := -nostdlib -nostartfiles -Wall -I. -g -fomit-frame-pointer -O2 -fPIC
|
||||
@@ -51,11 +52,11 @@ $(libname): $(libaio_sobjs) libaio.map
|
||||
$(CC) $(SO_CFLAGS) -Wl,--version-script=libaio.map -Wl,-soname=$(soname) -o $@ $(libaio_sobjs) $(LINK_FLAGS)
|
||||
|
||||
install: $(all_targets)
|
||||
- install -D -m 644 libaio.h $(includedir)/libaio.h
|
||||
- install -D -m 644 libaio.a $(libdir)/libaio.a
|
||||
- install -D -m 755 $(libname) $(libdir)/$(libname)
|
||||
- ln -sf $(libname) $(libdir)/$(soname)
|
||||
- ln -sf $(libname) $(libdir)/libaio.so
|
||||
+ install -D -m 644 libaio.h $(destdir)$(includedir)/libaio.h
|
||||
+ install -D -m 644 libaio.a $(destdir)$(usrlibdir)/libaio.a
|
||||
+ install -D -m 755 $(libname) $(destdir)$(libdir)/$(libname)
|
||||
+ ln -sf $(libdir)/$(libname) $(destdir)$(libdir)/$(soname)
|
||||
+ ln -sf $(libdir)/$(libname) $(destdir)$(usrlibdir)/libaio.so
|
||||
|
||||
$(libaio_objs): libaio.h
|
||||
|
||||
Reference in New Issue
Block a user