Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F136968644
D14271.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
6 KB
Referenced Files
None
Subscribers
None
D14271.diff
View Options
Index: head/sys/sys/ipc.h
===================================================================
--- head/sys/sys/ipc.h
+++ head/sys/sys/ipc.h
@@ -119,12 +119,14 @@
#define IPC_INFO 3 /* get info */
#endif
-#ifdef _KERNEL
+#if defined(_KERNEL) || defined(_WANT_SYSVIPC_INTERNALS)
/* Macros to convert between ipc ids and array indices or sequence ids */
#define IPCID_TO_IX(id) ((id) & 0xffff)
#define IPCID_TO_SEQ(id) (((id) >> 16) & 0xffff)
#define IXSEQ_TO_IPCID(ix,perm) (((perm.seq) << 16) | (ix & 0xffff))
+#endif
+#ifdef _KERNEL
struct thread;
struct proc;
struct vmspace;
Index: head/sys/sys/msg.h
===================================================================
--- head/sys/sys/msg.h
+++ head/sys/sys/msg.h
@@ -25,6 +25,9 @@
#include <sys/cdefs.h>
#include <sys/_types.h>
+#ifdef _WANT_SYSVMSG_INTERNALS
+#define _WANT_SYSVIPC_INTERNALS
+#endif
#include <sys/ipc.h>
/*
@@ -116,7 +119,6 @@
#endif
#ifdef _KERNEL
-
struct msg {
struct msg *msg_next; /* next msg in the chain */
long msg_type; /* type of this message */
@@ -126,7 +128,9 @@
short msg_spot; /* location of start of msg in buffer */
struct label *label; /* MAC Framework label */
};
+#endif
+#if defined(_KERNEL) || defined(_WANT_SYSVMSG_INTERNALS)
/*
* Based on the configuration parameters described in an SVR2 (yes, two)
* config(1m) man page.
@@ -145,7 +149,6 @@
int msgssz; /* size of a message segment (see note) */
int msgseg; /* number of message segments */
};
-extern struct msginfo msginfo;
/*
* Kernel wrapper for the user-level structure.
@@ -162,10 +165,13 @@
struct label *label; /* MAC label */
struct ucred *cred; /* creator's credentials */
};
+#endif
-#endif /* _KERNEL */
+#ifdef _KERNEL
+extern struct msginfo msginfo;
-#if !defined(_KERNEL) || defined(_WANT_MSG_PROTOTYPES)
+#else /* _KERNEL */
+
__BEGIN_DECLS
int msgctl(int, int, struct msqid_ds *);
int msgget(key_t, int);
@@ -175,7 +181,6 @@
int msgsys(int, ...);
#endif
__END_DECLS
-
-#endif /* !_KERNEL || _WANT_MSG_PROTOTYPES */
+#endif /* !_KERNEL */
#endif /* !_SYS_MSG_H_ */
Index: head/sys/sys/sem.h
===================================================================
--- head/sys/sys/sem.h
+++ head/sys/sys/sem.h
@@ -10,6 +10,9 @@
#ifndef _SYS_SEM_H_
#define _SYS_SEM_H_
+#ifdef _WANT_SYSVSEM_INTERNALS
+#define _WANT_SYSVIPC_INTERNALS
+#endif
#include <sys/ipc.h>
#ifndef _PID_T_DECLARED
@@ -101,8 +104,7 @@
#define SEM_A IPC_W /* alter permission */
#define SEM_R IPC_R /* read permission */
-#ifdef _KERNEL
-
+#if defined(_KERNEL) || defined(_WANT_SYSVSEM_INTERNALS)
/*
* semaphore info struct
*/
@@ -117,7 +119,6 @@
int semvmx; /* semaphore maximum value */
int semaem; /* adjust on exit max value */
};
-extern struct seminfo seminfo;
/*
* Kernel wrapper for the user-level structure
@@ -131,15 +132,17 @@
/* internal "mode" bits */
#define SEM_ALLOC 01000 /* semaphore is allocated */
#define SEM_DEST 02000 /* semaphore will be destroyed on last detach */
+#endif
+#ifdef _KERNEL
+extern struct seminfo seminfo;
/*
* Process sem_undo vectors at proc exit.
*/
void semexit(struct proc *p);
-#endif /* _KERNEL */
+#else /* !_KERNEL */
-#if !defined(_KERNEL) || defined(_WANT_SEM_PROTOTYPES)
__BEGIN_DECLS
#if __BSD_VISIBLE
int semsys(int, ...);
@@ -149,6 +152,6 @@
int semop(int, struct sembuf *, size_t);
__END_DECLS
-#endif /* !_KERNEL || _WANT_SEM_PROTOTYPES */
+#endif /* !_KERNEL */
#endif /* !_SYS_SEM_H_ */
Index: head/sys/sys/shm.h
===================================================================
--- head/sys/sys/shm.h
+++ head/sys/sys/shm.h
@@ -42,6 +42,9 @@
#define _SYS_SHM_H_
#include <sys/cdefs.h>
+#ifdef _WANT_SYSVSHM_INTERNALS
+#define _WANT_SYSVIPC_INTERNALS
+#endif
#include <sys/ipc.h>
#include <sys/_types.h>
@@ -107,9 +110,7 @@
time_t shm_ctime; /* time of last change by shmctl() */
};
-#ifdef _KERNEL
-#include <vm/vm.h>
-
+#if defined(_KERNEL) || defined(_WANT_SYSVSHM_INTERNALS)
/*
* System 5 style catch-all structure for shared memory constants that
* might be of interest to user programs. Do we really want/need this?
@@ -122,19 +123,20 @@
u_long shmall; /* max amount of shared memory (pages) */
};
+struct vm_object;
+
/*
* Add a kernel wrapper to the shmid_ds struct so that private info (like the
* MAC label) can be added to it, without changing the user interface.
*/
struct shmid_kernel {
struct shmid_ds u;
- vm_object_t object;
+ struct vm_object *object;
struct label *label; /* MAC label */
struct ucred *cred; /* creator's credendials */
};
+#endif
-extern struct shminfo shminfo;
-
struct shm_info {
int used_ids;
unsigned long shm_tot;
@@ -144,15 +146,17 @@
unsigned long swap_successes;
};
-struct thread;
+#ifdef _KERNEL
struct proc;
struct vmspace;
+extern struct shminfo shminfo;
+
void shmexit(struct vmspace *);
void shmfork(struct proc *, struct proc *);
-#endif /* _KERNEL */
-#if !defined(_KERNEL) || defined(_WANT_SHM_PROTOTYPES)
+#else /* !_KERNEL */
+
#include <sys/cdefs.h>
#ifndef _SIZE_T_DECLARED
@@ -170,6 +174,6 @@
int shmdt(const void *);
__END_DECLS
-#endif /* _KERNEL || _WANT_SHM_PROTOTYPES */
+#endif /* _KERNEL */
#endif /* !_SYS_SHM_H_ */
Index: head/usr.bin/ipcrm/ipcrm.c
===================================================================
--- head/usr.bin/ipcrm/ipcrm.c
+++ head/usr.bin/ipcrm/ipcrm.c
@@ -36,14 +36,12 @@
__FBSDID("$FreeBSD$");
#include <sys/param.h>
-#define _WANT_MSG_PROTOTYPES
-#define _WANT_SEM_PROTOTYPES
-#define _WANT_SHM_PROTOTYPES
-#define _KERNEL
+#define _WANT_SYSVMSG_INTERNALS
+#include <sys/msg.h>
+#define _WANT_SYSVSEM_INTERNALS
#include <sys/sem.h>
+#define _WANT_SYSVSHM_INTERNALS
#include <sys/shm.h>
-#include <sys/msg.h>
-#undef _KERNEL
#include <ctype.h>
#include <err.h>
Index: head/usr.bin/ipcs/ipc.h
===================================================================
--- head/usr.bin/ipcs/ipc.h
+++ head/usr.bin/ipcs/ipc.h
@@ -68,3 +68,6 @@
extern struct semid_kernel *sema;
extern struct msqid_kernel *msqids;
extern struct shmid_kernel *shmsegs;
+extern struct seminfo seminfo;
+extern struct msginfo msginfo;
+extern struct shminfo shminfo;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Nov 21, 9:03 PM (9 h, 25 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25804369
Default Alt Text
D14271.diff (6 KB)
Attached To
Mode
D14271: Get rid of the requirement to include SysV IPC headers with _KERNEL defined in ipcrm by introducing a number of _WANT_foo defines.
Attached
Detach File
Event Timeline
Log In to Comment