taglinefilesource code
shmd20ipc/shm.cstatic int shm_map (struct shm_desc *shmd, int remap);
shmd331ipc/shm.cstatic int shm_map (struct shm_desc *shmd, int remap)
shmd336ipc/shm.cunsigned long page_dir = shmd->task->tss.cr3;
shmd339ipc/shm.cfor (tmp = shmd->start; tmp < shmd->end; tmp += PAGE_SIZE) { 
shmd368ipc/shm.cshm_sgn = shmd->shm_sgn;
shmd369ipc/shm.cfor (tmp = shmd->start; tmp < shmd->end; tmp += PAGE_SIZE, 
shmd431ipc/shm.cstruct shm_desc *shmd;
shmd454ipc/shm.cfor (shmd = current->shm; shmd; shmd = shmd->task_next) {
shmd455ipc/shm.cif (shmd->start < SHM_RANGE_START)
shmd457ipc/shm.cif (addr >= shmd->start)
shmd458ipc/shm.caddr = shmd->start;
shmd470ipc/shm.cfor (shmd = current->shm; shmd; shmd = shmd->task_next) {
shmd471ipc/shm.cif (addr >= shmd->start && addr < shmd->end)
shmd473ipc/shm.cif (addr + shp->shm_segsz >= shmd->start && 
shmd474ipc/shm.caddr + shp->shm_segsz < shmd->end)
shmd483ipc/shm.cshmd = (struct shm_desc *) kmalloc (sizeof(*shmd), GFP_KERNEL);
shmd484ipc/shm.cif (!shmd)
shmd487ipc/shm.ckfree(shmd);
shmd490ipc/shm.cshmd->shm_sgn = (SHM_SWP_TYPE << 1) | (id << SHM_ID_SHIFT) |
shmd492ipc/shm.cshmd->start = addr;
shmd493ipc/shm.cshmd->end = addr + shp->shm_npages * PAGE_SIZE;
shmd494ipc/shm.cshmd->task = current;
shmd496ipc/shm.cif ((err = add_vm_area(shmd->start, shmd->end - shmd->start, shmflg & SHM_RDONLY))) {
shmd497ipc/shm.ckfree(shmd);
shmd503ipc/shm.cif ((err = shm_map (shmd, shmflg & SHM_REMAP))) {
shmd506ipc/shm.ckfree(shmd);
shmd510ipc/shm.cshmd->task_next = current->shm;
shmd511ipc/shm.ccurrent->shm = shmd;
shmd512ipc/shm.cshmd->seg_next = shp->attaches;
shmd513ipc/shm.cshp->attaches = shmd;
shmd529ipc/shm.cstruct shm_desc *shmd = *shmdp; 
shmd533ipc/shm.cid = (shmd->shm_sgn >> SHM_ID_SHIFT) & SHM_ID_MASK;
shmd535ipc/shm.c*shmdp = shmd->task_next;
shmd537ipc/shm.cif (*shmdp == shmd) {
shmd538ipc/shm.c*shmdp = shmd->seg_next; 
shmd544ipc/shm.cdo_munmap(shmd->start, shp->shm_segsz);
shmd545ipc/shm.ckfree(shmd);
shmd559ipc/shm.cstruct shm_desc *shmd, **shmdp;  
shmd561ipc/shm.cfor (shmdp = &current->shm; (shmd = *shmdp); shmdp=&shmd->task_next) { 
shmd562ipc/shm.cif (shmd->start == (ulong) shmaddr) {
shmd587ipc/shm.cstruct shm_desc *shmd, *new_desc = NULL, *tmp;
shmd595ipc/shm.cfor (shmd = p1->shm; shmd; shmd = shmd->task_next) {
shmd606ipc/shm.c*tmp = *shmd;
shmd612ipc/shm.cfor (shmd = new_desc; shmd; shmd = shmd->task_next) {
shmd613ipc/shm.cid = (shmd->shm_sgn >> SHM_ID_SHIFT) & SHM_ID_MASK;
shmd619ipc/shm.cshmd->seg_next = shp->attaches;
shmd620ipc/shm.cshp->attaches = shmd;
shmd695ipc/shm.cstruct shm_desc *shmd;
shmd734ipc/shm.cfor (shmd = shp->attaches; shmd; shmd = shmd->seg_next) {
shmd736ipc/shm.cif ((shmd->shm_sgn >> SHM_ID_SHIFT & SHM_ID_MASK) != id) {
shmd740ipc/shm.ctmp = shmd->start + (idx << PAGE_SHIFT);
shmd741ipc/shm.cif (tmp >= shmd->end) {
shmd745ipc/shm.cpte = PAGE_DIR_OFFSET(shmd->task->tss.cr3,tmp);
shmd748ipc/shm.cid, shmd->start, idx);
shmd761ipc/shm.ctmp = shmd->shm_sgn | idx << SHM_IDX_SHIFT;
shmd764ipc/shm.cshmd->task->mm->rss--;