在核心中獲取pmem裝置的虛擬位址

2021-07-28 13:29:58 字數 697 閱讀 4763

pmem的配置可以參考沒有的選項可以不選。不要少選了,不然沒有pmem裝置滴。

配置完之後,想要在核心中獲取pmem的虛擬位址,就先來個系統呼叫吧。

我的核心是4.4.4。所以在arch/x86/entry/syscall_64.tbl中新增編號,順序新增即可。然後在include/linux/syscalls.h新增asmlinkage long +系統呼叫名。ok。

接下來在系統呼叫實現中使用一下**

static struct file_system_type you_fs_type = ;

fmode_t mode = fmode_read | fmode_write | fmode_excl;

struct block_device *bdev;

unsigned long virt_addr = 0;

unsigned long pfn = 0;

bdev = blkdev_get_by_path(dev_name, mode, you_fs_type);

s_bdev->bd_disk->fops->direct_access(bdev,0, &virt_addr, &pfn);

其中dev_name就是

pmem

裝置名稱,可以從

fdisk -l

中找到。然後就可以自己在裡面瞎搞了。

linux核心中符號位址的獲取

有些核心函式或者核心變數是不匯出的,但是確實需要用,那該怎麼辦?因此尋找核心符號位址就有必要進行一下總結,更有甚,如果想找一條特定的指令,比如movl的指令位址,那更需要投入一些精力!總的來說,我總結了下面五種方式 1.通過procfs中的kallsym檔案或者system.map檔案直接查詢 這種...

3 7核心中裝置樹的操作函式

include linux 目錄下有很多of開頭的標頭檔案 dtb device node platform device 核心中開放出來的介面函式的宣告大多在include linux 下面,關於裝置樹的都是以of h形式命名 這裡介紹一下各個標頭檔案中是關於那些的函式 a.處理dtb of fd...

PHP變數在核心中的實現

我們都知道php是乙個弱型別語言,它的變數理論上可以儲存任何型別的資料。那麼,php的變數在核心中究竟是怎麼實現的呢?在php核心中,變數稱為zval,變數的值稱為zend value,注意這是兩個不同的東西。php中變數的記憶體是通過引用計數的方式進行管理的,在php7之前,zval容器中有兩個位...