日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux 内存映射函数 mmap()函数笔记

發布時間:2025/4/5 linux 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 内存映射函数 mmap()函数笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.所需頭文件:<sys/mman.h>

2.函數原型:void * mmap(void *start, size_t length, int prot , int flags, int fd, off_t offset)

(1)start:要映射到的內存區域的起始地址,通常都是用NULL(NULL即為0)。NULL表示由內核來指定該內存地址 ;

(2)length:要映射的內存區域的大小 ;

(3)prot:期望的內存保護標志,不能與文件的打開模式沖突。是以下的某個值,可以通過or運算合理地組合在一起 :

? ? ? ? ?PROT_EXEC //頁內容可以被執行?
? ? ? ? ?PROT_READ //頁內容可以被讀取?
? ? ? ? ?PROT_WRITE //頁可以被寫入?
? ? ? ? ?PROT_NONE //頁不可訪問?

(4)flags:指定映射對象的類型,映射選項和映射頁是否可以共享。它的值可以是一個或者多個以下位的組合體 :

? ? ? ? ?MAP_FIXED :使用指定的映射起始地址,如果由start和len參數指定的內存區重疊于現存的映射空間,重疊部分將會被丟? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 棄。如果指定的起始地址不可用,操作將會失敗。并且起始地址必須落在頁的邊界上。?
? ? ? ? ?MAP_SHARED :對映射區域的寫入數據會復制回文件內, 而且允許其他映射該文件的進程共享。?
? ? ? ? ?MAP_PRIVATE :建立一個寫入時拷貝的私有映射。內存區域的寫入不會影響到原文件。這個標志和以上標志是互斥的,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?只能使用其中一個。?
? ? ? ? ? MAP_DENYWRITE :這個標志被忽略。?
? ? ? ? ? MAP_EXECUTABLE :同上?
? ? ? ? ? MAP_NORESERVE :不要為這個映射保留交換空間。當交換空間被保留,對映射區修改的可能會得到保證。當交換空? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?間不被保留,同時內存不足,對映射區的修改會引起段違例信號。?
? ? ? ? ? MAP_LOCKED :鎖定映射區的頁面,從而防止頁面被交換出內存。?
? ? ? ? ? MAP_GROWSDOWN :用于堆棧,告訴內核VM系統,映射區可以向下擴展。?
? ? ? ? ? MAP_ANONYMOUS :匿名映射,映射區不與任何文件關聯。?
? ? ? ? ? MAP_ANON :MAP_ANONYMOUS的別稱,不再被使用。?
? ? ? ? ? MAP_FILE :兼容標志,被忽略。?
? ? ? ? ? MAP_32BIT :將映射區放在進程地址空間的低2GB,MAP_FIXED指定時會被忽略。當前這個標志只在x86-64平臺上得? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 到?支持。?
? ? ? ? ? MAP_POPULATE :為文件映射通過預讀的方式準備好頁表。隨后對映射區的訪問不會被頁違例阻塞。?
? ? ? ? ? MAP_NONBLOCK :僅和MAP_POPULATE一起使用時才有意義。不執行預讀,只為已存在于內存中的頁面建立入?口。

(5)fd:文件描述符(由open函數返回)?

(6)offset:表示被映射對象(即文件)從那里開始對映,通常都是用0。 該值應該為大小為PAGE_SIZE的整數倍 ;

(7)返回值:成功執行時,mmap()返回被映射區的指針,失敗時,mmap()返回MAP_FAILED

errno被設為以下的某個值?
EACCES:訪問出錯?
EAGAIN:文件已被鎖定,或者太多的內存已被鎖定?
EBADF:fd不是有效的文件描述詞?
EINVAL:一個或者多個參數無效?
ENFILE:已達到系統對打開文件的限制?
ENODEV:指定文件所在的文件系統不支持內存映射?
ENOMEM:內存不足,或者進程已超出最大內存映射數量?
EPERM:權能不足,操作不允許?
ETXTBSY:已寫的方式打開文件,同時指定MAP_DENYWRITE標志?
SIGSEGV:試著向只讀區寫入?
SIGBUS:試著訪問不屬于進程的內存區?

(8)使用例子:

int fd = open("/dev/mem",O_RDWR|O_SYNC);if(fd < 0) {printf("opent /dev/mem error! \r\n");close(fd);return; }maped_addr = (unsigned long*)mmap(NULL, 0x1000, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0xF8001000);

3. int munmap(void *start, size_t length)?

start:要取消映射的內存區域的起始地址?
length:要取消映射的內存區域的大小。?
返回說明?
成功執行時munmap()返回0。失敗時munmap返回-1.

總結

以上是生活随笔為你收集整理的Linux 内存映射函数 mmap()函数笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费人成在线 | 91免费黄视频 | 爱逼av| 久久九九国产精品 | 韩国福利一区 | 中文字幕黑丝 | 亚洲国产欧美日韩在线 | 香蕉一级片 | 日韩一区二区在线看 | 亚洲麻豆一区二区三区 | av电影一区二区三区 | 一区二区三区免费在线视频 | 久久av高潮av无码av喷吹 | 亚洲欧美黄色片 | 亚洲一区 视频 | 黄色理伦 | 一区二区三区不卡在线观看 | 精品视频在线观看一区 | 国产 欧美 日韩 一区 | 国产成人精品一区二区三区免费 | 国产91丝袜在线播放九色 | 香蕉视频网站在线观看 | 五月综合视频 | 久久精品一区二区三 | 黄污视频网站 | 欧美性生交大片免费看 | 国产成人欧美 | 香港av在线 | 一本一本久久a久久精品综合麻豆 | 欧美资源 | 天堂av2020| 国产精品国产av | a级黄片毛片 | 浓精喷进老师黑色丝袜在线观看 | 欧美一级淫片免费视频黄 | 成人午夜视频在线观看 | 宅男深夜视频 | 宇都宫紫苑在线播放 | 国产精品一区二区免费 | 亚洲色图21p | 久久精品国产电影 | 美女精品一区二区 | brazzers精品成人一区 | 婷婷综合激情网 | jizz中国女人 | 久久久黄色大片 | 久久免费黄色 | 日本黄色三级 | 女大学生的家政保姆初体验 | 欧美视频在线观看免费 | 亚洲图片二区 | 操少妇视频 | 免费毛片在线播放 | 在线观看国产精品一区 | 亚洲hh | 欧美午夜寂寞影院 | 亚洲天堂免费观看 | 日本免费不卡视频 | 精品无码久久久久成人漫画 | 性生活在线视频 | 国产福利二区 | 乳揉みま痴汉4在线播放 | 成年人的免费视频 | 韩国av毛片| 九九精品在线观看视频 | 森林影视官网在线观看 | 国产爆乳无码一区二区麻豆 | 免费看国产黄色 | 中文字幕日韩一区二区 | 国产 丝袜 欧美中文 另类 | 色综合视频在线观看 | 在线黄色大片 | 成人在线视频网站 | 色88久久久久高潮综合影院 | www.4hu95.com四虎 极品在线视频 | 久久电影一区 | 久久久久一区二区三区 | 97高清国语自产拍 | 欧美色涩在线第一页 | 久久久噜噜噜久久 | 性生交大片免费看狂欲 | 一级黄色免费网站 | 日韩在线一卡二卡 | 自拍视频一区二区 | 久操久操久操 | 久久精品91 | 啪啪网站免费看 | aaa色| 国产特黄级aaaaa片免 | 亚洲电影在线看 | 对白刺激theporn | 日韩欧洲亚洲AV无码精品 | 国产绳艺sm调教室论坛 | 国产视频麻豆 | 国产永久免费观看 | 五月婷婷,六月丁香 | 岛国av在线 | caoporn免费在线 | 中文字幕日韩一区二区三区 |