Author: ed
Date: Thu Jul 28 12:22:01 2016
New Revision: 303435
URL: https://svnweb.freebsd.org/changeset/base/303435

Log:
  Change the return type of msgrcv() to ssize_t as required by POSIX.
  
  It looks like the msgrcv() system call is already written in such a way
  that the size is internally computed as a size_t and written into all of
  td_retval[0]. This means that it is effectively already returning
  ssize_t. It's just that the userspace prototype doesn't match up.

Modified:
  head/lib/libc/sys/msgrcv.2
  head/sys/kern/syscalls.master
  head/sys/sys/msg.h

Modified: head/lib/libc/sys/msgrcv.2
==============================================================================
--- head/lib/libc/sys/msgrcv.2  Thu Jul 28 12:06:40 2016        (r303434)
+++ head/lib/libc/sys/msgrcv.2  Thu Jul 28 12:22:01 2016        (r303435)
@@ -31,7 +31,7 @@
 .\" $FreeBSD$
 .\"
 .\"/
-.Dd July 9, 2009
+.Dd July 28, 2016
 .Dt MSGRCV 2
 .Os
 .Sh NAME
@@ -43,7 +43,7 @@
 .In sys/types.h
 .In sys/ipc.h
 .In sys/msg.h
-.Ft int
+.Ft ssize_t
 .Fn msgrcv "int msqid" "void *msgp" "size_t msgsz" "long msgtyp" "int msgflg"
 .Sh DESCRIPTION
 The

Modified: head/sys/kern/syscalls.master
==============================================================================
--- head/sys/kern/syscalls.master       Thu Jul 28 12:06:40 2016        
(r303434)
+++ head/sys/kern/syscalls.master       Thu Jul 28 12:22:01 2016        
(r303435)
@@ -428,7 +428,7 @@
 225    AUE_MSGGET      NOSTD   { int msgget(key_t key, int msgflg); }
 226    AUE_MSGSND      NOSTD   { int msgsnd(int msqid, const void *msgp, \
                                    size_t msgsz, int msgflg); }
-227    AUE_MSGRCV      NOSTD   { int msgrcv(int msqid, void *msgp, \
+227    AUE_MSGRCV      NOSTD   { ssize_t msgrcv(int msqid, void *msgp, \
                                    size_t msgsz, long msgtyp, int msgflg); }
 228    AUE_SHMAT       NOSTD   { int shmat(int shmid, const void *shmaddr, \
                                    int shmflg); }

Modified: head/sys/sys/msg.h
==============================================================================
--- head/sys/sys/msg.h  Thu Jul 28 12:06:40 2016        (r303434)
+++ head/sys/sys/msg.h  Thu Jul 28 12:22:01 2016        (r303435)
@@ -169,8 +169,7 @@ struct msqid_kernel {
 __BEGIN_DECLS
 int msgctl(int, int, struct msqid_ds *);
 int msgget(key_t, int);
-/* XXX return value should be ssize_t. */
-int msgrcv(int, void *, size_t, long, int);
+ssize_t msgrcv(int, void *, size_t, long, int);
 int msgsnd(int, const void *, size_t, int);
 #if __BSD_VISIBLE
 int msgsys(int, ...);
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to