freebsd-nq/sys/compat/linux/linux_ipc.h
Marcel Moolenaar 5002a60f9b Round of cleanups and enhancements. These include (in random order):
o  Introduce private types for use in linux syscalls for two reasons:
   1. establish type independence for ease in porting and,
   2. provide a visual queue as to which syscalls have proper
      prototypes to further cleanup the i386/alpha split.
   Linuxulator types are prefixed by 'l_'. void and char have not
   been "virtualized".

o  Provide dummy functions for all syscalls and remove dummy functions
   or implementations of truely obsolete syscalls.

o  Sanitize the shm*, sem* and msg* syscalls.

o  Make a first attempt to implement the linux_sysctl syscall. At this
   time it only returns one MIB (KERN_VERSION), but most importantly,
   it tells us when we need to add additional sysctls :-)

o  Bump the kenel version up to 2.4.2 (this is not the same as the
   KERN_VERSION MIB, BTW).

o  Implement new syscalls, of which most are specific to i386. Our
   syscall table is now up to date with Linux 2.4.2. Some highlights:
   -  Implement the 32-bit uid_t and gid_t bases syscalls.
   -  Implement a couple of 64-bit file size/offset bases syscalls.

o  Fix or improve numerous syscalls and prototypes.

o  Reduce style(9) violations while I'm here. Especially indentation
   inconsistencies within the same file are addressed. Re-indenting
   did not obfuscate actual changes to the extend that it could not
   be combined.

NOTE: I spend some time testing these changes and found that if there
      were regressions, they were not caused by these changes AFAICT.
      It was observed that installing a RH 7.1 runtime environment
      did make matters worse. Hangs and/or reboots have been observed
      with and without these changes, so when it failed to make life
      better in cases it doesn't look like it made it worse.
2001-09-08 19:07:04 +00:00

132 lines
3.2 KiB
C

/*-
* Copyright (c) 2000 Marcel Moolenaar
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer
* in this position and unchanged.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $FreeBSD$
*/
#ifndef _LINUX_IPC_H_
#define _LINUX_IPC_H_
#ifdef __i386__
struct linux_msgctl_args
{
l_int msqid;
l_int cmd;
struct l_msqid_ds *buf;
};
struct linux_msgget_args
{
l_key_t key;
l_int msgflg;
};
struct linux_msgrcv_args
{
l_int msqid;
struct l_msgbuf *msgp;
l_size_t msgsz;
l_long msgtyp;
l_int msgflg;
};
struct linux_msgsnd_args
{
l_int msqid;
struct l_msgbuf *msgp;
l_size_t msgsz;
l_int msgflg;
};
struct linux_semctl_args
{
l_int semid;
l_int semnum;
l_int cmd;
union l_semun arg;
};
struct linux_semget_args
{
l_key_t key;
l_int nsems;
l_int semflg;
};
struct linux_semop_args
{
l_int semid;
struct l_sembuf *tsops;
l_uint nsops;
};
struct linux_shmat_args
{
l_int shmid;
char *shmaddr;
l_int shmflg;
l_ulong *raddr;
};
struct linux_shmctl_args
{
l_int shmid;
l_int cmd;
struct l_shmid_ds *buf;
};
struct linux_shmdt_args
{
char *shmaddr;
};
struct linux_shmget_args
{
l_key_t key;
l_size_t size;
l_int shmflg;
};
int linux_msgctl __P((struct proc *, struct linux_msgctl_args *));
int linux_msgget __P((struct proc *, struct linux_msgget_args *));
int linux_msgrcv __P((struct proc *, struct linux_msgrcv_args *));
int linux_msgsnd __P((struct proc *, struct linux_msgsnd_args *));
int linux_semctl __P((struct proc *, struct linux_semctl_args *));
int linux_semget __P((struct proc *, struct linux_semget_args *));
int linux_semop __P((struct proc *, struct linux_semop_args *));
int linux_shmat __P((struct proc *, struct linux_shmat_args *));
int linux_shmctl __P((struct proc *, struct linux_shmctl_args *));
int linux_shmdt __P((struct proc *, struct linux_shmdt_args *));
int linux_shmget __P((struct proc *, struct linux_shmget_args *));
#endif /* __i386__ */
#endif /* _LINUX_IPC_H_ */