Hallo, dies ist ein Test.
PWD: /www/data-lst1/unixsoft/unixsoft/kaempfer/.public_html
Running in File Mode
Relative path: ./../../../../../../usr/include/sys/shm_impl.h
Real path: /usr/include/sys/shm_impl.h
Zurück
/* * Copyright (c) 2006, 2021, Oracle and/or its affiliates. */ #ifndef _SYS_SHM_IMPL_H #define _SYS_SHM_IMPL_H #include <sys/ipc_impl.h> #if defined(_KERNEL) || defined(_KMEMUSER) #include <sys/shm.h> #include <sys/avl.h> #include <sys/t_lock.h> #endif #ifdef __cplusplus extern "C" { #endif struct mo; struct mw; struct mrp; /* * shmsys system call subcodes */ #define SHMAT 0 #define SHMCTL 1 #define SHMDT 2 #define SHMGET 3 #define SHMIDS 4 #define SHMADV 5 #define SHMGET_OSM 6 /* * There is a shared mem id data structure (shmid_ds) for each * segment in the system. */ #if defined(_KERNEL) || defined(_KMEMUSER) typedef struct cmi_link { void (*update_wait)(void *arg); void (*detach)(void *arg, void *arg1); void *cmi_obj; } cmi_link_t; typedef struct kshmid { kipc_perm_t shm_perm; /* operation permission struct */ size_t shm_segsz; /* size of segment in bytes */ struct anon_map *shm_amp; /* segment anon_map pointer */ ushort_t shm_lkcnt; /* number of times it is being locked */ pgcnt_t shm_lkpages; /* number of pages locked by shmctl */ kmutex_t shm_mlock; /* held when locking physical pages */ /* Therefore, protects p_lckcnt for */ /* pages that back shm */ /* also protects shm_mrp* */ pid_t shm_lpid; /* pid of last shmop */ pid_t shm_cpid; /* pid of creator */ ulong_t shm_attach; /* number of attaches (ipc lock) */ time_t shm_atime; /* last shmat time */ time_t shm_dtime; /* last shmdt time */ time_t shm_ctime; /* last change time */ struct sptinfo *shm_sptinfo; /* info about ISM segment */ struct seg *shm_sptseg; /* pointer to ISM segment */ long shm_sptprot; /* was reserved (still a "long") */ uint8_t shm_advice; /* advice for shared memory segment */ uint8_t shm_adiused; /* ADI ever enabled in this segment? */ size_t shm_granule_sz; /* OSM granule size */ size_t shm_allocated; /* mem allocated for OSM */ struct mo *shm_mo; /* Memory object for OSM */ struct mw *shm_mw; /* mapping window for OSM */ uint8_t *shm_gtable; /* byte-per granule table */ struct mrp *shm_mrp; /* if non NULL get memory from mrp */ cmi_link_t *shm_cmi; /* linked CMI segment if any */ } kshmid_t; /* * Granule states are protected by mo_range_lock()s on the corresponding * offsets in shm->shm_mo. */ typedef enum kshmid_gtable_flags { /* state bits */ SHMG_LOCKED = (1 << 0), /* granule is present */ SHMG_ADI = (1 << 1) /* granule is enabled for ADI */ } kshmid_gtable_flags_t; /* * Segacct Flags. */ #define SHMSA_ISM 1 /* uses shared page table */ #define SHMSA_OSM 2 /* uses optimized shared memory */ typedef struct sptinfo { struct as *sptas; /* dummy as ptr. for spt segment */ } sptinfo_t; /* * Protected by p->p_lock */ typedef struct segacct { avl_node_t sa_tree; caddr_t sa_addr; size_t sa_len; ulong_t sa_flags; kshmid_t *sa_id; } segacct_t; /* * Error codes for shmgetid(). */ #define SHMID_NONE (-1) #define SHMID_FREE (-2) extern void shminit(void); extern void shmfork(struct proc *, struct proc *); extern void shmexit(struct proc *); extern int shmgetid(struct proc *, caddr_t); extern kmutex_t *shmid_lookup(int, kshmid_t **); #endif /* _KERNEL */ #if defined(_SYSCALL32) /* * LP64 view of the ILP32 shmid_ds structure */ struct shmid_ds32 { struct ipc_perm32 shm_perm; /* operation permission struct */ size32_t shm_segsz; /* size of segment in bytes */ uint32_t shm_flags; /* see SHMDS_* flags */ uint16_t shm_lkcnt; /* number of times it is being locked */ pid32_t shm_lpid; /* pid of last shmop */ pid32_t shm_cpid; /* pid of creator */ uint32_t shm_nattch; /* number of attaches */ uint32_t shm_cnattch; /* number of ISM attaches */ time32_t shm_atime; /* last shmat time */ int32_t shm_pad1; /* reserved for time_t expansion */ time32_t shm_dtime; /* last shmdt time */ int32_t shm_pad2; /* reserved for time_t expansion */ time32_t shm_ctime; /* last change time */ caddr32_t shm_amp; /* unused */ uint64_t shm_gransize; /* granule size */ uint64_t shm_allocated; /* mem allocated for OSM */ }; #endif #ifdef __cplusplus } #endif #endif /* _SYS_SHM_IMPL_H */