[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[UNIKRAFT/NEWLIB PATCH] include/fcntl.h: Replace O_NONBLOCK with new one on arm



in newlib _default_fcntl.h, it defines O_NONBLOCK as follows:
\#define _FNONBLOCK      0x4000  /* non blocking I/O (POSIX style) */
But it is different from linux definition(04000=0x800):
\#define O_NONBLOCK     00004000

This difference confused virtio-9p open() syscall. If you open a
file with O_NONBLOCK(is 0x4000 in newlib) and sys_open will regard
it as O_DIRECTORY. At last it returns a ENOTDIR error.

Signed-off-by: Jia He <justin.he@xxxxxxx>
---
 include/fcntl.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/fcntl.h b/include/fcntl.h
index feb4f7c..367c1e6 100644
--- a/include/fcntl.h
+++ b/include/fcntl.h
@@ -15,6 +15,8 @@
 #define O_DIRECT     040000
 #define O_NOATIME  01000000
 #elif ((defined CONFIG_ARCH_ARM_64) || (defined CONFIG_ARCH_ARM_32))
+#undef O_NONBLOCK
+#define O_NONBLOCK    04000
 #define O_NOFOLLOW  0100000
 #define O_DIRECTORY  040000
 #define O_CLOEXEC  02000000
-- 
2.17.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.