Function report | 
Source Code:mm\nommu.c | 
Create Date:2022-07-28 14:37:05 | 
| Last Modify:2020-03-17 21:26:27 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:determine whether a mapping should be permitted and, if so, what sort of* mapping we're capable of supporting
Proto:static int validate_mmap_request(struct file *file, unsigned long addr, unsigned long len, unsigned long prot, unsigned long flags, unsigned long pgoff, unsigned long *_capabilities)
Type:int
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| struct file * | file | |
| unsigned long | addr | |
| unsigned long | len | |
| unsigned long | prot | |
| unsigned long | flags | |
| unsigned long | pgoff | |
| unsigned long * | _capabilities | 
| 797 | If flags & Interpret addr exactly Then Return -EINVAL | 
| 800 | If (flags & Mask for type of mapping ) != Changes are private && (flags & Mask for type of mapping ) != Share changes Then Return -EINVAL | 
| 813 | If pgoff + (rlen >> PAGE_SHIFT determines the page size ) < pgoff Then Return -EOVERFLOW | 
| 816 | If file Then | 
| 825 | If mmap_capabilities Then | 
| 826 | capabilities = mmap_capabilities(file) | 
| 827 | Else | 
| 831 | Case & == S_IFREG | 
| 832 | Case & == S_IFBLK | 
| 834 | Break | 
| 836 | Case & == S_IFCHR | 
| 837 | capabilities = Can be mapped directly (MAP_SHARED) | Can be mapped for reading | Can be mapped for writing | 
| 841 | Break | 
| 843 | Default | 
| 844 | Return -EINVAL | 
| 850 | If Not get_unmapped_area Then capabilities &= ~Can be mapped directly (MAP_SHARED) | 
| 852 | If Not (f_mode & Has read method(s) ) Then capabilities &= ~Copy can be mapped (MAP_PRIVATE) | 
| 856 | If Not (f_mode & le is open for reading ) Then Return -EACCES | 
| 859 | If flags & Share changes Then | 
| 861 | If prot & page can be written && Not (f_mode & le is open for writing ) Then Return -EACCES | 
| 865 | If IS_APPEND(file_inode(file)) && f_mode & le is open for writing Then Return -EACCES | 
| 869 | If locks_verify_locked(file) Then Return -EAGAIN | 
| 872 | If Not (capabilities & Can be mapped directly (MAP_SHARED)) Then Return -ENODEV | 
| 877 | Else | 
| 880 | If Not (capabilities & Copy can be mapped (MAP_PRIVATE)) Then Return -ENODEV | 
| 885 | If prot & page can be written Then capabilities &= ~Can be mapped directly (MAP_SHARED) | 
| 889 | If capabilities & Can be mapped directly (MAP_SHARED) Then | 
| 890 | If prot & page can be read && Not (capabilities & Can be mapped for reading) || prot & page can be written && Not (capabilities & Can be mapped for writing) || prot & page can be executed && Not (capabilities & Can be mapped for execution) Then | 
| 895 | If flags & Share changes Then | 
| 904 | If path_noexec( & f_path) Then | 
| 905 | If prot & page can be executed Then Return -EPERM | 
| 907 | Else if prot & page can be read && Not (prot & page can be executed ) Then | 
| 909 | If personality & READ_IMPLIES_EXEC Then | 
| 910 | If capabilities & Can be mapped for execution Then prot |= page can be executed | 
| 913 | Else if prot & page can be read && prot & page can be executed && Not (capabilities & Can be mapped for execution) Then | 
| 920 | Else | 
| 927 | If prot & page can be read && personality & READ_IMPLIES_EXEC Then prot |= page can be executed | 
| 933 | ret = security_mmap_addr(addr) | 
| 938 | _capabilities = capabilities | 
| 939 | Return 0 | 
| Name | Describe | 
|---|---|
| do_mmap | handle mapping creation for uClinux | 
| 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  |