Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Oct 2006 21:57:10 +0800 (CST)
From:      Cheng-Lung Sung <clsung@FreeBSD.org>
To:        FreeBSD-gnats-submit@freebsd.org
Cc:        freebsd-hackers@freebsd.org, freebsd-current@freebsd.org
Subject:   [PATCH] sys/sem.h should include sys/types.h
Message-ID:  <20061015135710.A28897E98D@FreeBSD.csie.nctu.edu.tw>

next in thread | raw e-mail | index | archive | help

>Submitter-Id:	current-users
>Originator:	Cheng-Lung Sung
>Organization:	FreeBSD @ Taiwan
>Confidential:	no
>Synopsis:	[PATCH] sys/sem.h should include sys/types.h
>Severity:	non-critical
>Priority:	low
>Category:	kern
>Class:		sw-bug
>Release:	FreeBSD 6.1-PRERELEASE i386
>Environment:
System: FreeBSD.csie.nctu.edu.tw 6.1-STABLE FreeBSD 6.1-STABLE #9: Thu May 11 14:31:45 CST 2006     root@FreeBSD.csie.nctu.edu.tw:/home/usr.obj/usr/src/sys/FREEBSD  i386

>Description:
- sys/sem.h has included sys/ipc.h, which includes sys/_types.h
  but it (and its including files) does not include sys/types.h
- therefore, in sys/sem.h struct semid_ds declares "time_t sem_otime;" ...etc
- if we only compile a program which do not include sys/types.h, it will fail.
>How-To-Repeat:
test the following program (copy from devel/ruby-sysvipc), named conftest.c:
1: #include <sys/sem.h>
2:
3: /*top*/
4: int
5: main ()
6: {
7: if ((union semun *) 0)
8:   return 0;
9: if (sizeof (union semun))
10:   return 0;
11:   ;
12:   return 0;
13: }

We will got the following result:
In file included from conftest.c:1:
/usr/include/sys/sem.h:21: error: syntax error before "time_t"
/usr/include/sys/sem.h:23: error: syntax error before "time_t"

>Fix:

Index: sys/sys/sem.h
===================================================================
RCS file: /home/ncvs/src/sys/sys/sem.h,v
retrieving revision 1.29
diff -u -r1.29 sem.h
--- sys/sys/sem.h	17 Nov 2004 13:12:06 -0000	1.29
+++ sys/sys/sem.h	15 Oct 2006 13:47:37 -0000
@@ -10,6 +10,7 @@
 #ifndef _SYS_SEM_H_
 #define _SYS_SEM_H_
 
+#include <sys/types.h>
 #include <sys/ipc.h>
 
 struct sem;




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20061015135710.A28897E98D>