taglinefilesource code
shmd20ipc/shm.cstatic int shm_map (struct shm_desc *shmd, int remap);
shmd330ipc/shm.cstatic int shm_map (struct shm_desc *shmd, int remap)
shmd335ipc/shm.cunsigned long page_dir = shmd->task->tss.cr3;
shmd338ipc/shm.cfor (tmp = shmd->start; tmp < shmd->end; tmp += PAGE_SIZE) { 
shmd367ipc/shm.cshm_sgn = shmd->shm_sgn;
shmd368ipc/shm.cfor (tmp = shmd->start; tmp < shmd->end; tmp += PAGE_SIZE, 
shmd386ipc/shm.cstruct shm_desc *shmd;
shmd409ipc/shm.cfor (shmd = current->shm; shmd; shmd = shmd->task_next) {
shmd410ipc/shm.cif (shmd->start < SHM_RANGE_START)
shmd412ipc/shm.cif (addr >= shmd->start)
shmd413ipc/shm.caddr = shmd->start;
shmd425ipc/shm.cfor (shmd = current->shm; shmd; shmd = shmd->task_next) {
shmd426ipc/shm.cif (addr >= shmd->start && addr < shmd->end)
shmd428ipc/shm.cif (addr + shp->shm_segsz >= shmd->start && 
shmd429ipc/shm.caddr + shp->shm_segsz < shmd->end)
shmd438ipc/shm.cshmd = (struct shm_desc *) kmalloc (sizeof(*shmd), GFP_KERNEL);
shmd439ipc/shm.cif (!shmd)
shmd442ipc/shm.ckfree_s (shmd, sizeof (*shmd));
shmd445ipc/shm.cshmd->shm_sgn = (SHM_SWP_TYPE << 1) | (id << SHM_ID_SHIFT) |
shmd447ipc/shm.cshmd->start = addr;
shmd448ipc/shm.cshmd->end = addr + shp->shm_npages * PAGE_SIZE;
shmd449ipc/shm.cshmd->task = current;
shmd458ipc/shm.cif ((err = shm_map (shmd, shmflg & SHM_REMAP))) {
shmd461ipc/shm.ckfree_s (shmd, sizeof (*shmd));
shmd465ipc/shm.cshmd->task_next = current->shm;
shmd466ipc/shm.ccurrent->shm = shmd;
shmd467ipc/shm.cshmd->seg_next = shp->attaches;
shmd468ipc/shm.cshp->attaches = shmd;
shmd484ipc/shm.cstruct shm_desc *shmd = *shmdp; 
shmd488ipc/shm.cid = (shmd->shm_sgn >> SHM_ID_SHIFT) & SHM_ID_MASK;
shmd490ipc/shm.c*shmdp = shmd->task_next;
shmd492ipc/shm.cif (*shmdp == shmd) {
shmd493ipc/shm.c*shmdp = shmd->seg_next; 
shmd499ipc/shm.cunmap_page_range (shmd->start, shp->shm_segsz); /* sleeps */
shmd500ipc/shm.ckfree_s (shmd, sizeof (*shmd));
shmd514ipc/shm.cstruct shm_desc *shmd, **shmdp;  
shmd516ipc/shm.cfor (shmdp = &current->shm; (shmd = *shmdp); shmdp=&shmd->task_next) { 
shmd517ipc/shm.cif (shmd->start == (ulong) shmaddr) {
shmd542ipc/shm.cstruct shm_desc *shmd, *new_desc = NULL, *tmp;
shmd548ipc/shm.cfor (shmd = p1->shm; shmd; shmd = shmd->task_next) {
shmd559ipc/shm.c*tmp = *shmd;
shmd565ipc/shm.cfor (shmd = new_desc; shmd; shmd = shmd->task_next) {
shmd566ipc/shm.cid = (shmd->shm_sgn >> SHM_ID_SHIFT) & SHM_ID_MASK;
shmd572ipc/shm.cshmd->seg_next = shp->attaches;
shmd573ipc/shm.cshp->attaches = shmd;
shmd651ipc/shm.cstruct shm_desc *shmd;
shmd690ipc/shm.cfor (shmd = shp->attaches; shmd; shmd = shmd->seg_next) {
shmd692ipc/shm.cif ((shmd->shm_sgn >> SHM_ID_SHIFT & SHM_ID_MASK) != id) {
shmd696ipc/shm.ctmp = shmd->start + (idx << PAGE_SHIFT);
shmd697ipc/shm.cif (tmp >= shmd->end) {
shmd701ipc/shm.cpte = PAGE_DIR_OFFSET(shmd->task->tss.cr3,tmp);
shmd704ipc/shm.cid, shmd->start, idx);
shmd717ipc/shm.ctmp = shmd->shm_sgn | idx << SHM_IDX_SHIFT;
shmd720ipc/shm.cshmd->task->rss--;