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;
shmd403ipc/shm.cfor (shmd = current->shm; shmd; shmd = shmd->task_next) {
shmd404ipc/shm.cif (shmd->start < SHM_RANGE_START)
shmd406ipc/shm.cif (addr >= shmd->start)
shmd407ipc/shm.caddr = shmd->start;
shmd419ipc/shm.cfor (shmd = current->shm; shmd; shmd = shmd->task_next) {
shmd420ipc/shm.cif (addr >= shmd->start && addr < shmd->end)
shmd422ipc/shm.cif (addr + shp->shm_segsz >= shmd->start && 
shmd423ipc/shm.caddr + shp->shm_segsz < shmd->end)
shmd432ipc/shm.cshmd = (struct shm_desc *) kmalloc (sizeof(*shmd), GFP_KERNEL);
shmd433ipc/shm.cif (!shmd)
shmd436ipc/shm.ckfree_s (shmd, sizeof (*shmd));
shmd439ipc/shm.cshmd->shm_sgn = (SHM_SWP_TYPE << 1) | (id << SHM_ID_SHIFT) |
shmd441ipc/shm.cshmd->start = addr;
shmd442ipc/shm.cshmd->end = addr + shp->shm_npages * PAGE_SIZE;
shmd443ipc/shm.cshmd->task = current;
shmd452ipc/shm.cif ((err = shm_map (shmd, shmflg & SHM_REMAP))) {
shmd455ipc/shm.ckfree_s (shmd, sizeof (*shmd));
shmd459ipc/shm.cshmd->task_next = current->shm;
shmd460ipc/shm.ccurrent->shm = shmd;
shmd461ipc/shm.cshmd->seg_next = shp->attaches;
shmd462ipc/shm.cshp->attaches = shmd;
shmd476ipc/shm.cstruct shm_desc *shmd = *shmdp; 
shmd480ipc/shm.cid = (shmd->shm_sgn >> SHM_ID_SHIFT) & SHM_ID_MASK;
shmd482ipc/shm.c*shmdp = shmd->task_next;
shmd484ipc/shm.cif (*shmdp == shmd) {
shmd485ipc/shm.c*shmdp = shmd->seg_next; 
shmd491ipc/shm.cunmap_page_range (shmd->start, shp->shm_segsz); /* sleeps */
shmd492ipc/shm.ckfree_s (shmd, sizeof (*shmd));
shmd506ipc/shm.cstruct shm_desc *shmd, **shmdp;  
shmd508ipc/shm.cfor (shmdp = &current->shm; (shmd = *shmdp); shmdp=&shmd->task_next) { 
shmd509ipc/shm.cif (shmd->start == (ulong) shmaddr) {
shmd534ipc/shm.cstruct shm_desc *shmd, *new_desc = NULL, *tmp;
shmd540ipc/shm.cfor (shmd = p1->shm; shmd; shmd = shmd->task_next) {
shmd551ipc/shm.c*tmp = *shmd;
shmd557ipc/shm.cfor (shmd = new_desc; shmd; shmd = shmd->task_next) {
shmd558ipc/shm.cid = (shmd->shm_sgn >> SHM_ID_SHIFT) & SHM_ID_MASK;
shmd564ipc/shm.cshmd->seg_next = shp->attaches;
shmd565ipc/shm.cshp->attaches = shmd;
shmd643ipc/shm.cstruct shm_desc *shmd;
shmd682ipc/shm.cfor (shmd = shp->attaches; shmd; shmd = shmd->seg_next) {
shmd684ipc/shm.cif ((shmd->shm_sgn >> SHM_ID_SHIFT & SHM_ID_MASK) != id) {
shmd688ipc/shm.ctmp = shmd->start + (idx << PAGE_SHIFT);
shmd689ipc/shm.cif (tmp >= shmd->end) {
shmd693ipc/shm.cpte = PAGE_DIR_OFFSET(shmd->task->tss.cr3,tmp);
shmd696ipc/shm.cid, shmd->start, idx);
shmd709ipc/shm.ctmp = shmd->shm_sgn | idx << SHM_IDX_SHIFT;
shmd712ipc/shm.cshmd->task->rss--;