1. 程式人生 > >在/sys/中建立裝置子裝置目錄

在/sys/中建立裝置子裝置目錄

在drivers/base下的platform.c中:

struct device platform_bus = {
	.init_name	= "platform",
};

注意它是一個struct device結構型別,它是所有裝置的根目錄。
這是在s5p4418中display.c中的一段程式碼:

struct kobject *kobj = NULL;
/* create attribute interface */
kobj = kobject_create_and_add("display", &platform_bus.kobj); //在/sys/devices/platform中新增一個裝置目錄
	if (! kobj) {
		printk(KERN_ERR "Fail, create kobject for display\n");
		return -ret;
	}

	ret = sysfs_create_group(kobj, &attr_group); //為裝置新增屬性。
再來看lib/kobject.c中的kobject_create_and_add定義:
struct kobject *kobject_create_and_add(const char *name, struct kobject *parent)
{
	struct kobject *kobj;
	int retval;

	kobj = kobject_create();
	if (!kobj)
		return NULL;

	retval = kobject_add(kobj, parent, "%s", name);
	if (retval) {
		printk(KERN_WARNING "%s: kobject_add error: %d\n",
		       __func__, retval);
		kobject_put(kobj);
		kobj = NULL;
	}
	return kobj;
}
EXPORT_SYMBOL_GPL(kobject_create_and_add);

它的第1個引數是要建的目錄的名稱,第2個引數是父目錄的kobject物件(這意為著不光可以在/sys/devices/platform下建立,還可以在任意目錄下建立)。

相關推薦

在/sys/建立裝置裝置目錄

在drivers/base下的platform.c中:struct device platform_bus = { .init_name = "platform", }; 注意它是一個struct device結構型別,它是所有裝置的根目錄。這是在s5p4418中displ

在Linux建立迴環裝置(loopback device)的方法

你有沒有想過在Linux的檔案管理系統中再建立一個檔案系統,就像在Windows中建立一個新的磁碟分割槽那樣(但其實並不必非得直接那麼做)。這時你就需要用到迴環裝置(loop device)。在Linux中,迴環裝置允許使用者以一個普通磁碟檔案虛擬一個塊裝置。設想一個磁碟裝置

快速在VSCode建立多檔案多目錄C++專案

對於輕量級的VSCode編輯器,我想像使用那些IDE一樣,通過簡單的幾步就能構建出自己的專案檔案樹,類似於下面的結構。所以特地寫了一個指令碼,用於自動建立一個基本的專案。 . ├── Headers │ └── test.hpp ├── makefile ├

程式建立一個子程序,然後父子程序各自獨自執行,父程序在標準輸入裝置上讀入小寫字母,寫入管道。程序從管道讀取字元並轉化為大寫字母。讀到x結束

程式中建立一個子程序,然後父子程序各自獨自執行,父程序在標準輸入裝置上讀入小寫字母,寫入管道。子程序從管道讀取字元並轉化為大寫字母。讀到x結束。(非字母字元就輸出本身) 相關的系統函式:fork(),read(),write(),pipe(); 筆者在telnet上寫這些程式碼,由於

android建立裝置節點

init收到uevent後,對於action為add/remove的uevent,會建立或刪除節點。這在handle_device_event中處理:如果主裝置號或次裝置號無效(-1),則返回;否則會根據subsystem會在dev下不同的目錄中建立裝置節點。

Linux建立新使用者並賦予指定目錄的相關許可權

需求:建立undead使用者,使用者的主目錄是/home/undead,密碼是123,該使用者具有760許可權 建立使用者且指定該使用者的根路徑和密碼 useradd -d /home/undead -m undead 這種方式建立的使用者可以使用ssh登入

ubuntu16.04永久修改 USB 裝置許可權

最近使用 USB轉串列埠比較多,但是發展每次使用的時候都需要 手動修改一下 ttyUSB 讀寫許可權,  電腦重啟後就無效了 古尋找一種可以永久更改USB許可權的辦法: 1,檢視USB轉串列埠埠號 dmesg | grep ttyS* 2, 檢視ttyUS

java建立類物件時總是會先建立其父類物件

今天跟小夥伴討論到:建立物件時,該物件的父類物件會不會建立,我的觀點是always 以下結合程式碼來證明(沒有經虛擬機器驗證) public class Sub extends Sup{ Sub(){ System.out.println(this

i2c 與 spi 裝置在新版核心不採用DTS裝置樹形式 在驅動新增裝置資訊(board_info)的方法

本文唯一地址:http://blog.csdn.net/dearsq/article/details/51953610 歡迎轉載,轉載請著名,謝謝~ /* 廢話:在展訊平臺移植 spi 裝置的時候發現完成 dts 和 driver中的 of_match_

eclipse的tomcat,程式碼建立file獲取目錄與tomcat單獨執行獲取目錄不同的解決辦法

提示,此程式碼所在的都是rest介面(web專案)中,而不是在普通的Test類或者是main方法中 重現:     @GET     public Response sayHello(@Cont

39 Oracle深度學習筆記——自動建立ASM UDEV裝置指令碼

指令碼如下:   i=`lsscsi | grep updisk | awk '{print $6}' | awk -F '/' '{print $3}' | xargs` for j in $i do temp=`/sbin/scsi_id -g -u /dev/"$j"` e

java建立目錄的方法mkdirs和mkdir之間的區別

mkdir建立目錄的時候,是根據父目錄來判斷的,如果有父目錄就在它下面建立子目錄,如果沒有,就不會建立目錄 mkdirs()建立目錄的方法是不管有沒有父目錄,都會去建立響應的目錄,所以我們一般使用mkdirs()方法來建立目錄。

linux 驅動建立多個裝置

linux 驅動中建立一個裝置的例子很多,以下例子是建立多個字元裝置的例子,包括驅動部分和測試部分 驅動部分包括 globalmem.c  Makefile兩個檔案: globalmem.c file: #include <linux/module.h>

iOS需要查詢的裝置號, 型號

   網上搜索出來的,記錄下來以後使用方便:     //手機序列號     NSString* identifierNumber = [[UIDevice currentDevice] uniqueIdentifier];     NSLog(@"手機序列號: %

linux下建立tuntap網路裝置

目標:在linux下建立bridge虛擬網橋、eth虛擬網絡卡、tuntap介面裝置。通過ping來傳遞報文,通過tuntap使使用者應用程式來收發報文。 環境:測試環境為VMware、Ubuntu14。 1.準備工作。 安裝brctl、tunctl: 輸入brctl和tu

視窗邏輯座標,裝置座標的區別

      我先說一下自己在寫貪吃蛇程式時,用座標確定蛇的位置時,用自己座標時發現和自己所料想的座標有差距,所以就查了邏輯座標和裝置座標。自己寫的做標要想和裝置座標保持一致。就必須想辦法。      

js建立、新增、刪除、移動、複製和查詢()節點

1)建立新節點createDocumentFragment() //建立一個DOM片段createElement_x() //建立一個具體的元素createTextNode() //建立一個文字節點2)新增、移除、替換、插入appendChild() //新增removeC

Android App開發學習筆記(001)——用Android Studio建立虛擬Android裝置時的注意事項-01

安裝了Android Studio 2.3,建立第一個預設的安卓專案,點選AS的run按鈕,在開啟的對話方塊裡建立了一個AVD(Android Virtual Device),然後就等著虛擬機器螢幕上顯示結果了,但是等了半天,AS的狀態條一直顯示“waiting for t

KVM的網路IO裝置虛擬化方式

在KVM虛擬化的架構裡,對CPU的虛擬化採用的是硬體輔助的方式(Intel VT-x,AMD-V),效率比較高,記憶體的虛擬化有Intel EPT技術的支援,效率也沒有問題;那麼對於像磁碟驅動器,網絡卡等io裝置來說,KVM提供兩種虛擬化方式:採用全虛擬化純軟體實現的QEM

java在linux建立目錄遇到的問題

1、如果要在linux中建立多級目錄的話 File dir = new File("/cloud/test/"); if(!dir.exists()){     dir.mkdirs(); } 建立多級目錄的話要使用mkdirs()。 //小結://1、利用mkdir()建