(reported by Yoshinori Tahara)
* bug fix: more accurate disassembly annotations of foreign function
calls. (thanks to Andy Hefner)
+ * new feature: SB-POSIX bindings for mlockall, munlockall, and setsid.
+ (thanks to Travis Cross)
* fixed some bugs revealed by Paul Dietz' test suite:
** NIL is a valid function name (regression at 1.0.13.38)
** FILL on lists was missing its return value (regression at 1.0.12.27)
adding.
FD_CLR FD_ISSET FD_SET FD_ZERO accept acct adjtime adjtimex bdflush
-bind break brk cacheflush capget capset chroot clone connect
+bind break brk cacheflush capget capset clone connect
create_module delete_module execve exit flock
fstatfs ftime getcontext getdents getdomainname
getdtablesize getgroups gethostid gethostname getitimer
getpeername getpriority getrlimit getrusage getsockname getsockopt
gettimeofday gtty idle init_module ioctl_list ioperm iopl listen
-llseek lock madvise mincore mknod mlock mlockall
+llseek lock madvise mincore mknod mlock
modify_ldt mount mprotect mpx mremap msgctl msgget msgop msgrcv msgsnd
-munlock munlockall nanosleep nice pause poll
+munlock nanosleep nice pause poll
prctl pread prof profil pselect ptrace pwrite query_module quotactl
-read readlink readv reboot recv recvfrom recvmsg
+read readv reboot recv recvfrom recvmsg
sbrk sched_get_priority_max sched_get_priority_min sched_getparam
sched_getscheduler sched_rr_get_interval sched_setparam
sched_setscheduler sched_yield select semctl semget semop send
sendfile sendmsg sendto setcontext setdomainname setgroups sethostid
-sethostname setitimer setpgrp setpriority setrlimit setsid setsockopt
+sethostname setitimer setpriority setrlimit setsockopt
settimeofday sgetmask shmat shmctl shmdt shmget shmop shutdown
sigaction sigaltstack sigblock siggetmask sigmask signal sigpause
sigpending sigprocmask sigreturn sigsetmask sigsuspend sigvec socket
(define-call "killpg" int minusp (pgrp int) (signal int))
(define-call "pause" int minusp)
(define-call "setpgid" int minusp (pid pid-t) (pgid pid-t))
- (define-call "setpgrp" int minusp))
+ (define-call "setpgrp" int minusp)
+ (define-call "setsid" pid-t minusp))
(defmacro with-growing-c-string ((buffer size) &body body)
(sb-int:with-unique-names (c-string-block)
(define-call "msync" int minusp
(addr sb-sys:system-area-pointer) (length unsigned) (flags int)))
+;;; mlockall, munlockall
+(define-call "mlockall" int minusp (flags int))
+(define-call "munlockall" int minusp)
+
#-win32
(define-call "getpagesize" int minusp)
#+win32
(:documentation "Instances of this class represent entries in
the system's user database."))
-(defmacro define-pw-call (name arg type)
- #-win32
- ;; FIXME: this isn't the documented way of doing this, surely?
- (let ((lisp-name (intern (string-upcase name) :sb-posix)))
- `(progn
- (export ',lisp-name :sb-posix)
- (declaim (inline ,lisp-name))
- (defun ,lisp-name (,arg)
- (let ((r (alien-funcall (extern-alien ,name ,type) ,arg)))
- (if (null-alien r)
- nil
- (alien-to-passwd r)))))))
-
-(define-pw-call "getpwnam" login-name (function (* alien-passwd) c-string))
-(define-pw-call "getpwuid" uid (function (* alien-passwd) uid-t))
-
;;; group database
#-win32
(define-protocol-class group alien-group ()
(passwd :initarg :passwd :accessor group-passwd)
(gid :initarg :gid :accessor group-gid)))
-(defmacro define-gr-call (name arg type)
+(defmacro define-obj-call (name arg type conv)
#-win32
;; FIXME: this isn't the documented way of doing this, surely?
(let ((lisp-name (intern (string-upcase name) :sb-posix)))
(let ((r (alien-funcall (extern-alien ,name ,type) ,arg)))
(if (null-alien r)
nil
- (alien-to-group r)))))))
+ (,conv r)))))))
-(define-gr-call "getgrnam" login-name (function (* alien-group) c-string))
-(define-gr-call "getgrgid" gid (function (* alien-group) gid-t))
+(define-obj-call "getpwnam" login-name (function (* alien-passwd) c-string) alien-to-passwd)
+(define-obj-call "getpwuid" uid (function (* alien-passwd) uid-t) alien-to-passwd)
+(define-obj-call "getgrnam" login-name (function (* alien-group) c-string) alien-to-group)
+(define-obj-call "getgrgid" gid (function (* alien-group) gid-t) alien-to-group)
#-win32