Date: Thu, 28 Jul 2016 12:22:01 +0000 (UTC) From: Ed Schouten <ed@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r303435 - in head: lib/libc/sys sys/kern sys/sys Message-ID: <201607281222.u6SCM1lI040985@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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, ...);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201607281222.u6SCM1lI040985>