[nio-cvs] r69 - branches/home/psmith/restructure/src/io
psmith at common-lisp.net
psmith at common-lisp.net
Mon Feb 5 04:51:27 UTC 2007
Author: psmith
Date: Sun Feb 4 23:51:27 2007
New Revision: 69
Modified:
branches/home/psmith/restructure/src/io/fd-helper.lisp
Log:
Corrections to fcntl and O_NONBLOCK definitions for linux
Modified: branches/home/psmith/restructure/src/io/fd-helper.lisp
==============================================================================
--- branches/home/psmith/restructure/src/io/fd-helper.lisp (original)
+++ branches/home/psmith/restructure/src/io/fd-helper.lisp Sun Feb 4 23:51:27 2007
@@ -32,7 +32,12 @@
(defconstant +cmd-get-flags+ 3)
(defconstant +cmd-set-flags+ 4)
-(defconstant +arg-nonblock+ #x0004)
+
+#+(or darwin macosx freebsd)
+(defconstant +arg-nonblock+ #x4)
+
+#+linux
+(defconstant +arg-nonblock+ #x800)
(defcfun ("close" %close) :int
(fd :int))
@@ -40,7 +45,10 @@
(defcfun ("fcntl" %fcntl) :int
(fd :int)
(cmd :int)
+#+(or darwin macosx freebsd)
(arg :int))
+#+linux
+ (arg :long))
(defcfun ("read" %read) :long
(fd :int)
@@ -60,10 +68,15 @@
(defun memzero (ptr size)
(%memset ptr 0 size))
+(defun get-fd-flags(unix-fd)
+ (%fcntl unix-fd +cmd-get-flags+ 0))
(defun set-fd-nonblocking (unix-fd)
"Set UNIX-FD to non-blocking mode (O_NONBLOCK)."
- (%fcntl unix-fd +cmd-set-flags+ +arg-nonblock+))
+ (let* ((flags (get-fd-flags unix-fd))
+ (new-flags (logior flags +arg-nonblock+)))
+ (format t "set-fd-nonblocking :fd ~A :old-flags 0x~X 0x~X~%" unix-fd flags new-flags)
+ (%fcntl unix-fd +cmd-set-flags+ new-flags)))
(defun close-fd (unix-fd)
More information about the Nio-cvs
mailing list