tag | line | file | source code |
shmd | 19 | ipc/shm.c | static int shm_map (struct shm_desc *shmd, int remap); |
shmd | 347 | ipc/shm.c | static int shm_map (struct shm_desc *shmd, int remap) |
shmd | 352 | ipc/shm.c | unsigned long page_dir = shmd->task->tss.cr3; |
shmd | 355 | ipc/shm.c | for (tmp = shmd->start; tmp < shmd->end; tmp += PAGE_SIZE) { |
shmd | 384 | ipc/shm.c | shm_sgn = shmd->shm_sgn; |
shmd | 385 | ipc/shm.c | for (tmp = shmd->start; tmp < shmd->end; tmp += PAGE_SIZE, |
shmd | 446 | ipc/shm.c | struct shm_desc *shmd; |
shmd | 469 | ipc/shm.c | for (shmd = current->shm; shmd; shmd = shmd->task_next) { |
shmd | 470 | ipc/shm.c | if (shmd->start < SHM_RANGE_START) |
shmd | 472 | ipc/shm.c | if (addr >= shmd->start) |
shmd | 473 | ipc/shm.c | addr = shmd->start; |
shmd | 485 | ipc/shm.c | for (shmd = current->shm; shmd; shmd = shmd->task_next) { |
shmd | 486 | ipc/shm.c | if (addr >= shmd->start && addr < shmd->end) |
shmd | 488 | ipc/shm.c | if (addr + shp->shm_segsz >= shmd->start && |
shmd | 489 | ipc/shm.c | addr + shp->shm_segsz < shmd->end) |
shmd | 498 | ipc/shm.c | shmd = (struct shm_desc *) kmalloc (sizeof(*shmd), GFP_KERNEL); |
shmd | 499 | ipc/shm.c | if (!shmd) |
shmd | 502 | ipc/shm.c | kfree(shmd); |
shmd | 505 | ipc/shm.c | shmd->shm_sgn = (SHM_SWP_TYPE << 1) | (id << SHM_ID_SHIFT) | |
shmd | 507 | ipc/shm.c | shmd->start = addr; |
shmd | 508 | ipc/shm.c | shmd->end = addr + shp->shm_npages * PAGE_SIZE; |
shmd | 509 | ipc/shm.c | shmd->task = current; |
shmd | 511 | ipc/shm.c | if ((err = add_vm_area(shmd->start, shmd->end - shmd->start, shmflg & SHM_RDONLY))) { |
shmd | 512 | ipc/shm.c | kfree(shmd); |
shmd | 518 | ipc/shm.c | if ((err = shm_map (shmd, shmflg & SHM_REMAP))) { |
shmd | 521 | ipc/shm.c | kfree(shmd); |
shmd | 525 | ipc/shm.c | shmd->task_next = current->shm; |
shmd | 526 | ipc/shm.c | current->shm = shmd; |
shmd | 527 | ipc/shm.c | shmd->seg_next = shp->attaches; |
shmd | 528 | ipc/shm.c | shp->attaches = shmd; |
shmd | 544 | ipc/shm.c | struct shm_desc *shmd = *shmdp; |
shmd | 548 | ipc/shm.c | id = (shmd->shm_sgn >> SHM_ID_SHIFT) & SHM_ID_MASK; |
shmd | 550 | ipc/shm.c | *shmdp = shmd->task_next; |
shmd | 552 | ipc/shm.c | if (*shmdp == shmd) { |
shmd | 553 | ipc/shm.c | *shmdp = shmd->seg_next; |
shmd | 559 | ipc/shm.c | do_munmap(shmd->start, shp->shm_segsz); |
shmd | 560 | ipc/shm.c | kfree(shmd); |
shmd | 574 | ipc/shm.c | struct shm_desc *shmd, **shmdp; |
shmd | 576 | ipc/shm.c | for (shmdp = ¤t->shm; (shmd = *shmdp); shmdp=&shmd->task_next) { |
shmd | 577 | ipc/shm.c | if (shmd->start == (ulong) shmaddr) { |
shmd | 602 | ipc/shm.c | struct shm_desc *shmd, *new_desc = NULL, *tmp; |
shmd | 610 | ipc/shm.c | for (shmd = p1->shm; shmd; shmd = shmd->task_next) { |
shmd | 621 | ipc/shm.c | *tmp = *shmd; |
shmd | 627 | ipc/shm.c | for (shmd = new_desc; shmd; shmd = shmd->task_next) { |
shmd | 628 | ipc/shm.c | id = (shmd->shm_sgn >> SHM_ID_SHIFT) & SHM_ID_MASK; |
shmd | 634 | ipc/shm.c | shmd->seg_next = shp->attaches; |
shmd | 635 | ipc/shm.c | shp->attaches = shmd; |
shmd | 710 | ipc/shm.c | struct shm_desc *shmd; |
shmd | 749 | ipc/shm.c | for (shmd = shp->attaches; shmd; shmd = shmd->seg_next) { |
shmd | 751 | ipc/shm.c | if ((shmd->shm_sgn >> SHM_ID_SHIFT & SHM_ID_MASK) != id) { |
shmd | 755 | ipc/shm.c | tmp = shmd->start + (idx << PAGE_SHIFT); |
shmd | 756 | ipc/shm.c | if (tmp >= shmd->end) { |
shmd | 760 | ipc/shm.c | pte = PAGE_DIR_OFFSET(shmd->task->tss.cr3,tmp); |
shmd | 763 | ipc/shm.c | id, shmd->start, idx); |
shmd | 776 | ipc/shm.c | tmp = shmd->shm_sgn | idx << SHM_IDX_SHIFT; |
shmd | 779 | ipc/shm.c | shmd->task->mm->rss--; |