Lines Matching refs:ids

70 	int ids;  member
100 void ipc_init_ids(struct ipc_ids *ids) in ipc_init_ids() argument
102 ids->in_use = 0; in ipc_init_ids()
103 ids->seq = 0; in ipc_init_ids()
104 ids->next_id = -1; in ipc_init_ids()
105 init_rwsem(&ids->rwsem); in ipc_init_ids()
106 idr_init(&ids->ipcs_idr); in ipc_init_ids()
119 int ids, int (*show)(struct seq_file *, void *)) in ipc_init_proc_interface() argument
129 iface->ids = ids; in ipc_init_proc_interface()
152 static struct kern_ipc_perm *ipc_findkey(struct ipc_ids *ids, key_t key) in ipc_findkey() argument
158 for (total = 0, next_id = 0; total < ids->in_use; next_id++) { in ipc_findkey()
159 ipc = idr_find(&ids->ipcs_idr, next_id); in ipc_findkey()
183 int ipc_get_maxid(struct ipc_ids *ids) in ipc_get_maxid() argument
189 if (ids->in_use == 0) in ipc_get_maxid()
192 if (ids->in_use == IPCMNI) in ipc_get_maxid()
197 for (id = 0; id < IPCMNI && total < ids->in_use; id++) { in ipc_get_maxid()
198 ipc = idr_find(&ids->ipcs_idr, id); in ipc_get_maxid()
220 int ipc_addid(struct ipc_ids *ids, struct kern_ipc_perm *new, int size) in ipc_addid() argument
225 int next_id = ids->next_id; in ipc_addid()
230 if (ids->in_use >= size) in ipc_addid()
244 id = idr_alloc(&ids->ipcs_idr, new, in ipc_addid()
254 ids->in_use++; in ipc_addid()
257 new->seq = ids->seq++; in ipc_addid()
258 if (ids->seq > IPCID_SEQ_MAX) in ipc_addid()
259 ids->seq = 0; in ipc_addid()
262 ids->next_id = -1; in ipc_addid()
279 static int ipcget_new(struct ipc_namespace *ns, struct ipc_ids *ids, in ipcget_new() argument
284 down_write(&ids->rwsem); in ipcget_new()
286 up_write(&ids->rwsem); in ipcget_new()
337 static int ipcget_public(struct ipc_namespace *ns, struct ipc_ids *ids, in ipcget_public() argument
348 down_write(&ids->rwsem); in ipcget_public()
349 ipcp = ipc_findkey(ids, params->key); in ipcget_public()
374 up_write(&ids->rwsem); in ipcget_public()
388 void ipc_rmid(struct ipc_ids *ids, struct kern_ipc_perm *ipcp) in ipc_rmid() argument
392 idr_remove(&ids->ipcs_idr, lid); in ipc_rmid()
393 ids->in_use--; in ipc_rmid()
558 struct kern_ipc_perm *ipc_obtain_object_idr(struct ipc_ids *ids, int id) in ipc_obtain_object_idr() argument
563 out = idr_find(&ids->ipcs_idr, lid); in ipc_obtain_object_idr()
579 struct kern_ipc_perm *ipc_lock(struct ipc_ids *ids, int id) in ipc_lock() argument
584 out = ipc_obtain_object_idr(ids, id); in ipc_lock()
617 struct kern_ipc_perm *ipc_obtain_object_check(struct ipc_ids *ids, int id) in ipc_obtain_object_check() argument
619 struct kern_ipc_perm *out = ipc_obtain_object_idr(ids, id); in ipc_obtain_object_check()
640 int ipcget(struct ipc_namespace *ns, struct ipc_ids *ids, in ipcget() argument
644 return ipcget_new(ns, ids, ops, params); in ipcget()
646 return ipcget_public(ns, ids, ops, params); in ipcget()
688 struct ipc_ids *ids, int id, int cmd, in ipcctl_pre_down_nolock() argument
695 ipcp = ipc_obtain_object_check(ids, id); in ipcctl_pre_down_nolock()
746 static struct kern_ipc_perm *sysvipc_find_ipc(struct ipc_ids *ids, loff_t pos, in sysvipc_find_ipc() argument
753 for (id = 0; id < pos && total < ids->in_use; id++) { in sysvipc_find_ipc()
754 ipc = idr_find(&ids->ipcs_idr, id); in sysvipc_find_ipc()
759 if (total >= ids->in_use) in sysvipc_find_ipc()
763 ipc = idr_find(&ids->ipcs_idr, pos); in sysvipc_find_ipc()
786 return sysvipc_find_ipc(&iter->ns->ids[iface->ids], *pos, pos); in sysvipc_proc_next()
797 struct ipc_ids *ids; in sysvipc_proc_start() local
799 ids = &iter->ns->ids[iface->ids]; in sysvipc_proc_start()
805 down_read(&ids->rwsem); in sysvipc_proc_start()
816 return sysvipc_find_ipc(ids, *pos - 1, pos); in sysvipc_proc_start()
824 struct ipc_ids *ids; in sysvipc_proc_stop() local
830 ids = &iter->ns->ids[iface->ids]; in sysvipc_proc_stop()
832 up_read(&ids->rwsem); in sysvipc_proc_stop()