a6df500f7d
CYGSERVER_REQUEST_MSG and CYGSERVER_REQUEST_SEM. (admininstrator_group_sid): Add extern declaration. * cygserver_ipc.h: Rewrite. * cygserver_msg.h: New file. * cygserver_sem.h: New file. * cygserver_shm.h: More or less rewrite. * cygwin.din: Add msgctl, msgget, msgrcv, msgsnd, semctl, semget and semop. * msg.cc: Rewrite. * safe_memory.h: Remove. * sem.cc: Rewrite. * shm.cc: Rewrite. * include/cygwin/ipc.h: Use appropriate guard. (struct ipc_perm): Add seq. (IPCID_TO_IX): New define from BSD. (IPCID_TO_SEQ): Ditto. (IXSEQ_TO_IPCID): Ditto. (IPC_R): Ditto. (IPC_W): Ditto. (IPC_M): Ditto. * include/cygwin/msg.h: Use appropriate guard. #ifdef _KERNEL all stuff not explicitely defined by SUSv3. Use signed types in structs to match types used in BSD. (msgqnum_t): Define unsigned. (msglen_t): Ditto. (struct msqid_ds): Add msg_first and msg_last. (struct msginfo): Remove msgpool. Add msgssz and msgseg. * include/cygwin/sem.h: Use appropriate guard. #ifdef _KERNEL all stuff not explicitely defined by SUSv3. Use signed types in structs to match types used in BSD. (SEM_UNDO): Define appropriately. (struct semid_ds): Add sem_base. (struct seminfo): Add semmap and semusz. (SEM_A): New define from BSD. (SEM_R): Ditto. (SEM_ALLOC): Ditto. (union semun): Define. * include/cygwin/shm.h: Use appropriate guard. #ifdef _KERNEL all stuff not explicitely defined by SUSv3. Use signed types in structs to match types used in BSD. (SHMLBA): Define using cygwin_internal(CW_GET_SHMLBA) call. (struct shmid_ds): Add shm_internal. (struct shm_info): Rename shm_ids to used_ids as in BSD. Add define for shm_ids. * include/cygwin/sysproto.h: New file. * include/cygwin/version.h: Bump API minor number. * include/sys/ipc.h: New file. * include/sys/msg.h: New file. * include/sys/queue.h: New file from BSD. * include/sys/sem.h: New file. * include/sys/shm.h: New file. * include/sys/sysproto.h: New file.
83 lines
1.6 KiB
C++
83 lines
1.6 KiB
C++
/* cygserver_ipc.h
|
|
|
|
Copyright 2002, 2003 Red Hat, Inc.
|
|
|
|
This file is part of Cygwin.
|
|
|
|
This software is a copyrighted work licensed under the terms of the
|
|
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
|
|
details. */
|
|
|
|
#ifndef __CYGSERVER_IPC_H__
|
|
#define __CYGSERVER_IPC_H__
|
|
|
|
/*
|
|
* Datastructure which is part of any IPC input parameter block.
|
|
*/
|
|
struct vmspace {
|
|
void *vm_map; /* UNUSED */
|
|
struct shmmap_state *vm_shm;
|
|
};
|
|
|
|
struct proc {
|
|
pid_t cygpid;
|
|
DWORD winpid;
|
|
__uid32_t uid;
|
|
__gid32_t gid;
|
|
int gidcnt;
|
|
__gid32_t *gidlist;
|
|
bool is_admin;
|
|
struct vmspace *p_vmspace;
|
|
};
|
|
|
|
#ifdef __INSIDE_CYGWIN__
|
|
inline void
|
|
ipc_set_proc_info (proc &blk)
|
|
{
|
|
blk.cygpid = getpid ();
|
|
blk.winpid = GetCurrentProcessId ();
|
|
blk.uid = geteuid32 ();
|
|
blk.gid = getegid32 ();
|
|
blk.gidcnt = 0;
|
|
blk.gidlist = NULL;
|
|
blk.is_admin = false;
|
|
}
|
|
#endif /* __INSIDE_CYGWIN__ */
|
|
|
|
#ifndef __INSIDE_CYGWIN__
|
|
class ipc_retval {
|
|
private:
|
|
union {
|
|
int i;
|
|
unsigned int u;
|
|
vm_offset_t off;
|
|
vm_object_t obj;
|
|
};
|
|
|
|
public:
|
|
ipc_retval (int ni) { i = ni; }
|
|
|
|
operator int () const { return i; }
|
|
int operator = (int ni) { return i = ni; }
|
|
|
|
operator unsigned int () const { return u; }
|
|
unsigned int operator = (unsigned int nu) { return u = nu; }
|
|
|
|
operator vm_offset_t () const { return off; }
|
|
vm_offset_t operator = (vm_offset_t noff) { return off = noff; }
|
|
|
|
operator vm_object_t () const { return obj; }
|
|
vm_object_t operator = (vm_object_t nobj) { return obj = nobj; }
|
|
};
|
|
|
|
struct thread {
|
|
class process *client;
|
|
proc *ipcblk;
|
|
ipc_retval td_retval[2];
|
|
};
|
|
#define td_proc ipcblk
|
|
#define p_pid cygpid
|
|
#endif
|
|
|
|
#endif /* __CYGSERVER_IPC_H__ */
|