| Function report | 
| Source Code: ipc\shm.c | Create Date:2022-07-28 16:48:29 | 
| Last Modify:2020-03-17 22:58:32 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:Fix shmaddr, allocate descriptor, map shm, add attach descriptor to lists.* NOTE! Despite the name, this is NOT a direct system call entrypoint. The* "raddr" thing points to kernel space, and there has to be a wrapper around* this.
Proto:long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr, unsigned long shmlba)
Type:long
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| int | shmid | |
| char __user * | shmaddr | |
| int | shmflg | |
| ulong * | raddr | |
| unsigned long | shmlba | 
| 1426 | flags = Share changes | 
| 1432 | populate = 0 | 
| 1438 | If addr Then | 
| 1440 | If shmflg & und attach address to SHMLBA boundary Then | 
| 1454 | Go to out | 
| 1457 | flags |= Interpret addr exactly | 
| 1458 | Else if shmflg & ake-over region on attach Then Go to out | 
| 1461 | If shmflg & ad-only access Then | 
| 1465 | Else | 
| 1466 | prot = page can be read | page can be written | 
| 1470 | If shmflg & xecution access Then | 
| 1471 | prot |= page can be executed | 
| 1481 | shp = shm_obtain_object_check(ns, shmid) | 
| 1484 | Go to out_unlock | 
| 1491 | err = security_shm_shmat( & shm_perm, shmaddr, shmflg) | 
| 1492 | If err Then Go to out_unlock | 
| 1495 | ipc_lock_object( & shm_perm) | 
| 1514 | shm_nattch++ | 
| 1516 | ipc_unlock_object( & shm_perm) | 
| 1520 | sfd = kzalloc - allocate memory. The memory is set to zero.*@size: how many bytes of memory are required.*@flags: the type of memory to allocate (see kmalloc). | 
| 1521 | If Not sfd Then | 
| 1523 | Go to out_nattch | 
| 1538 | ns = get_ipc_ns(ns) | 
| 1540 | vm_ops = NULL | 
| 1543 | err = security_mmap_file(file, prot, flags) | 
| 1547 | If lock for writing Then | 
| 1552 | If addr && Not (shmflg & ake-over region on attach ) Then | 
| 1563 | err = 0 | 
| 1564 | If IS_ERR_VALUE(addr) Then err = addr | 
| 1566 | invalid : | 
| 1567 | lease a write lock | 
| 1568 | If populate Then mm_populate(addr, populate) | 
| 1571 | out_fput : | 
| 1574 | out_nattch : | 
| 1575 | lock for writing | 
| 1576 | shp = shm_lock_(check_) routines are called in the paths where the rwsem* is not necessarily held. | 
| 1577 | shm_nattch-- | 
| 1580 | Else shm_unlock(shp) | 
| 1582 | lease a write lock | 
| 1583 | Return err | 
| 1585 | out_unlock : | 
| 1587 | out : | 
| 1588 | Return err | 
| Name | Describe | 
|---|---|
| SYSCALL_DEFINE3 | |
| COMPAT_SYSCALL_DEFINE3 | |
| ksys_ipc | 
| Source code conversion tool public plug-in interface | X | 
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |