shmctl64 was introduced as a private interface between libc & ipcs as part of the fix for: 4481071 ipcs(1) confused by 16G shared memory segments and other large animals It was undocumented and is thus treated as effectively Project Private. It was extended by PSARC 2002/174 to include the zone id information needed in this case. For the purposes of this case/contract, the interface is defined as: int shmctl64(int shmid, int cmd, struct shmid_ds64 *buf); The shmctl64() function provides a variety of shared memory control operations as specified by cmd, similar to shmctl(2). Other than the command options accepted and the data structure returned, this interface should be expected to operate the same as shmctl(2). This contract covers use of the IPC_STAT64 operation, which like shmctl's IPC_STAT fills in the buffer pointed to by buf with the current values for the data structure associated with shmid. This contract includes these structures, defined in , which will be used for the data returned via the buf pointer: typedef struct ipc_perm64 { uid_t ipcx_uid; /* owner's user id */ gid_t ipcx_gid; /* owner's group id */ uid_t ipcx_cuid; /* creator's user id */ gid_t ipcx_cgid; /* creator's group id */ mode_t ipcx_mode; /* access modes */ key_t ipcx_key; /* key */ projid_t ipcx_projid; /* allocating project id */ zoneid_t ipcx_zoneid; /* creator's zone id */ } ipc_perm64_t; struct shmid_ds64 { ipc_perm64_t shmx_perm; /* operation permission struct */ pid_t shmx_lpid; /* pid of last shmop */ pid_t shmx_cpid; /* pid of creator */ uint64_t shmx_segsz; /* size of segment in bytes */ uint64_t shmx_nattch; /* # of attaches */ uint64_t shmx_cnattch; /* # of ISM attaches */ uint64_t shmx_lkcnt; /* lock count ??? */ ipc_time_t shmx_atime; /* last shmat time */ ipc_time_t shmx_dtime; /* last shmdt time */ ipc_time_t shmx_ctime; /* last change time */ };