成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡單介紹Linux sysfs 桌面操作系統

運維 系統運維
使用 Linux sysfs 的關鍵就是掌握這些 sysfs 屬性的用法,下面以一些常見的 sysfs 屬性來展示它的用法;使用設備(PCI)的 sysfs 屬性文件以一份桌面系統上的視頻卡為例。

本人對Linux系統很感興趣,常見Linux sysfs 屬性的功能Linux本身是這個操作系統的核心部分,也就是操作系統的內核。內核是完成那些最基本操作的程序,它負責其他程序(如文本編輯器程序)的啟動與終止、內存申請處理硬盤訪問、網絡連接管理等方面的工作。

使用 Linux sysfs 的關鍵就是掌握這些 sysfs 屬性的用法,下面以一些常見的 sysfs 屬性來展示它的用法;
使用設備(PCI)的 sysfs 屬性文件以一份桌面系統上的視頻卡為例,列舉它對應的 kobject 上的屬性文件的對應用途;一般來說,在 Linux 桌面上都有視頻卡以支持 Xorg 軟件包作為 XWindow 服務器來運行,因此先找到 Xorg 的進程號,查看這個進程所使用的所有文件(注意查看這個進程屬性需要 root 用戶權限);
# ps xfa |grep Xorg
 2001 tty1     Ss+    2:24      \_ /usr/bin/Xorg :0 -nr -verbose -auth \
/var/run/gdm/auth-for-gdm-NPrkZK/database -nolisten tcp vt1
# lsof -nP -p 2001
Xorg    2001 root  mem    REG        8,3    617732     231033 \
/usr/lib/xorg/modules/drivers/sis_drv.so
[...]
Xorg    2001 root  mem    REG        0,0 134217728       5529 \
/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/resource0
Xorg    2001 root  mem    REG        0,0    131072       5531 \
/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/resource1
[...]
Xorg    2001 root    7u   REG        0,0       256       5504 \
/sys/devices/pci0000:00/0000:00:00.0/config
Xorg    2001 root    8u  unix 0xdbe66000       0t0       8756 socket
Xorg    2001 root    9u   REG        0,0       256       5528 \
/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/config
 
注意到此 Xorg 服務器是以內存映射 (mem) 的形式打開了 "/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/resource0" 和 "/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/resource1" ,同時以文件讀寫形式 (7u,9u) 打開了 "/sys/devices/pci0000:00/0000:00:00.0/config" 和 "/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/config"
事實上, PCI 設備對應的 kobject 目錄下的 config 正是代表PCI設備的“配置空間”,對于普通 PCI (非PCI-E)設備而言,其配置空間大小一般是 256字節,這個空間可以使用十六進制工具 dump 出來,如下。(有關 PCI 設備本身的三種地址空間,請參考附錄 LDD3)

# hexdump -C /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/config
00000000  39 10 30 63 03 00 30 02  00 00 00 03 00 00 00 80  |9.0c..0.........|
00000010  08 00 00 d8 00 00 00 e1  01 d0 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 19 10 30 1b  |..............0.|
00000030  00 00 00 00 40 00 00 00  00 00 00 00 00 00 00 00  |....@...........|
00000040  01 50 02 06 00 00 00 00  00 00 00 00 00 00 00 00  |.P..............|
00000050  02 00 30 00 0b 02 00 ff  00 00 00 00 00 00 00 00  |..0.............|
00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000100 

這個空間正好是 256字節大小,熟悉 PCI 的人們還可以知道,從 PCI 配置空間可以讀到有關此 PCI 設備的很多有用信息,如廠商代碼,設備代碼,IRQ 號碼等;前四個字節 0x39 0x10 0x30 0x63 就是按小端(little endian)存放的2個短整數,因此其 PCI 廠商號碼和 PCI 設備號碼分別是 0x1039 和 0x6330
# lspci -v -d 1039:6330
01:00.0 VGA compatible controller: Silicon Integrated Systems [SiS] 661/741/760 PCI/AGP \
or 662/761Gx PCIE VGA Display Adapter (prog-if 00 [VGA controller])
 Subsystem: Elitegroup Computer Systems Device 1b30
 Flags: 66MHz, medium devsel
 BIST result: 00
 Memory at d8000000 (32-bit, prefetchable) [size=128M]
 Memory at e1000000 (32-bit, non-prefetchable) [size=128K]
 I/O ports at d000 [size=128]
 Capabilities: [40] Power Management version 2
 Capabilities: [50] AGP version 3.0 

在 PCI 設備上除了有 config 是配置空間對用戶的接口以外,還有 resource{0,1,2,...} 是資源空間,對應著 PCI 設備的可映射內存空間;此外 PCI 設備還提供了很多接口,全部列表如下:

# ls -lU /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/
總計 0
-rw-r--r-- 1 root root      4096 12-09 00:28 uevent
-r--r--r-- 1 root root      4096 12-09 00:27 resource
-r--r--r-- 1 root root      4096 12-09 00:27 vendor
-r--r--r-- 1 root root      4096 12-09 00:27 device
-r--r--r-- 1 root root      4096 12-09 00:28 subsystem_vendor
-r--r--r-- 1 root root      4096 12-09 00:28 subsystem_device
-r--r--r-- 1 root root      4096 12-09 00:27 class
-r--r--r-- 1 root root      4096 12-09 00:27 irq
-r--r--r-- 1 root root      4096 12-09 00:28 local_cpus
-r--r--r-- 1 root root      4096 12-09 00:28 local_cpulist
-r--r--r-- 1 root root      4096 12-09 00:28 modalias
-rw------- 1 root root      4096 12-09 00:28 enable
-rw-r--r-- 1 root root      4096 12-09 00:28 broken_parity_status
-rw-r--r-- 1 root root      4096 12-09 00:28 msi_bus
lrwxrwxrwx 1 root root         0 12-09 00:28 subsystem -> ../../../../bus/pci
drwxr-xr-x 2 root root         0 12-09 00:28 power
-rw-r--r-- 1 root root       256 12-08 23:03 config
-rw------- 1 root root 134217728 12-08 23:03 resource0
-rw------- 1 root root 134217728 12-09 00:28 resource0_wc
-rw------- 1 root root    131072 12-08 23:03 resource1
-rw------- 1 root root       128 12-09 00:28 resource2
-r-------- 1 root root         0 12-09 00:28 rom 

可以看到很多其它屬性文件,這些屬性文件的權限位也都是正確的,有 w 權限位的才是可以寫入。其中大小為 4096字節的屬性一般是純文本描述的屬性,可以直接 cat 讀出和用 echo 字符串的方法寫入;其它非 4096字節大小的一般是二進制屬性,類似于上面的 config 屬性文件;關于純文本屬性和二進制屬性,在下文 編程實踐:添加Linux sysfs支持 一節會進一步說明。

從 vendor, device, subsystem_vendor, subsystem_device, class, resource 這些只讀屬性上分別可以讀到此 PCI 設備的廠商號、設備號、子系統廠商號、子系統設備號、PCI類別、資源表等,這些都是相應 PCI 設備的屬性,其實就是直接從 config 二進制文件讀出來,按照配置空間的格式讀出這些號碼;
使用 enable 這個可寫屬性可以禁用或啟用這個 PCI 設備,設備的過程很直觀,寫入1代表啟用,寫入0則代表禁用;
subsystem 和 driver 符號鏈接文件分別指向對應的 sysfs 位置;(這里缺少 driver 符號鏈接說明這個設備當前未使用內核級的驅動程序)
resource0, resource0_wc, resource1, resource2 等是從"PCI 配置空間"解析出來的資源定義段落分別生成的,它們是 PCI 總線驅動在 PCI 設備初始化階段加上去的,都是二進制屬性,但沒有實現讀寫接口,只支持 mmap 內存映射接口,嘗試進行讀寫會提示 IO 錯誤,其中 _wc 后綴表示 "合并式寫入(write combined)" ,它們用于作應用程序的內存映射,就可以訪問對應的 PCI 設備上相應的內存資源段落;
有了 PCI 核心對 Linux sysfs 的完善支持,每個設備甚至不用單獨的驅動程序,如這里的 "0000:01:00.0" 不需要一個內核級的驅動程序,有了 PCI 核心對該設備的配置空間發現機制,可以自動發現它的各個不同段落的資源屬性,在 Xorg 應用程序中可以直接以 "/usr/lib/xorg/modules/drivers/sis_drv.so" 這個用戶空間的驅動程序對其進行映射,就可以直接操作此視頻卡了;有了這一個 PCI 設備的示例可以知道,有了一個 PCI 設備的 /sys/devices/ 設備對象,去訪問它的各項屬性和設置屬性都非常簡單。以上介紹Linux sysfs桌面系統應用。

【編輯推薦】

  1. 十大Linux操作系統要點
  2. Linux操作系統非你不可的理由
  3. 輕松在Linux操作系統中找回遺失的root密碼
  4. 為你分析Linux操作系統和Windows系統
  5. 闡述Linux操作系統安裝與認識支援的硬體
責任編輯:佚名 來源: CSDN
相關推薦

2009-12-14 17:46:40

Linux桌面操作系統

2014-09-10 09:54:43

2009-12-31 16:16:55

2009-12-22 16:44:33

Linux桌面操作系統

2012-10-11 10:03:32

FedoraLinux

2009-12-10 16:38:36

Linux桌面操作系統

2009-12-11 16:53:52

Linux操作系統

2012-05-29 10:53:22

FedoraLinux操作系統

2010-03-11 15:01:56

Ubuntu操作系統

2011-01-04 18:15:21

2011-01-04 15:36:45

linux特征

2009-12-16 09:40:26

Linux操作系統

2009-12-23 09:34:51

Fedora VMne

2009-12-29 14:00:43

Ubuntu操作系統

2009-06-29 08:38:14

Linux操作系統

2009-07-03 06:55:33

Linux

2010-03-25 14:45:24

Linux桌面環境

2011-04-12 11:01:48

LinuxUnix桌面

2009-12-09 17:25:19

Linux操作系統

2009-06-25 08:53:03

Linux操作系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品福利视频 | 五月婷六月丁香 | 无码日韩精品一区二区免费 | 日日日视频 | 中文字幕91av | av黄色在线| 国产小网站 | 国产精品爱久久久久久久 | 日韩一区欧美一区 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 在线免费看黄 | 一本大道久久a久久精二百 欧洲一区二区三区 | 999免费视频 | 国产成人久久精品一区二区三区 | 男人的天堂久久 | 区一区二区三在线观看 | 亚洲日韩欧美一区二区在线 | 国产精品波多野结衣 | 91精品国产综合久久久久蜜臀 | 99色在线视频 | 国产精品美女在线观看 | 午夜在线视频 | 成人一区二区三区在线观看 | 99免费看 | 亚洲国产视频一区 | 亚州精品天堂中文字幕 | 欧美中文在线 | 日韩二三区 | 亚洲一区二区精品视频在线观看 | 国产成人自拍一区 | 国产精品久久久久永久免费观看 | 精品久久亚洲 | 91精品国产色综合久久 | 日日碰狠狠躁久久躁婷婷 | 在线视频中文字幕 | 国产日韩一区二区 | 少妇无套高潮一二三区 | 国产精品123区 | 日本欧美在线 | 久久精品国产亚洲一区二区三区 | 亚洲www |