linux下目錄簡介——/sys


Linux下/sys目錄介紹 
 
1. 概述
ramdisk 文件系統基於磁盤模擬技術,實際文件系統是ex2 ex3等。sysfs是一種基於ram文件系統和proc一樣。Sysfs文件系統是一個類似於proc文件系統的特殊文件系統,用於將系統中的設備組織成層次結構,並向用戶模式程序提供詳細的內核數據結構信息。其實,就是在用戶態可以通過對sys文件系統的訪問,來看內核態的一些驅動或者設備等。
mount -t sysfs sysfs /sys
root@RPM /sys$ ls
block     class     devices   fs        module
bus       dev       firmware  kernel    power
2. /sys/devices!!!
該目錄下是全局設備結構體系,包含所有被發現的注冊在各種總線上的各種物理設備。一般來說,所有的物理設備都按其在總線上的拓撲結構來顯示,但有兩個例外即platform devices和system devices。
platform devices一般是掛在芯片內部的高速或者低速總線上的各種控制器和外設,它們能被CPU直接尋址;
system devices不是外設,而是芯片內部的核心結構,比如CPU,timer等,它們一般沒有相關的驅動,但是會有一些體系結構相關的代碼來配置它們。
/sys/devices是內核對系統中所有設備的分層次表達模型,也是/sys文件系統管理設備的最重要的目錄結構。(為什么?因為其他目錄基本是分類組織鏈接文件,實際指向該目錄內容)。
root@RPM /sys$ ls devices/
platform  system    virtual
root@RPM /sys$ ls devices/platform/
alarmtimer         omap               reg-dummy          uevent
cpuidle-am33xx.0   omap2-nand.0       sgx                usb_time_plug
davinci-pcm-audio  power              smartreflex
nop_usb_xceiv.0    pruss_uio          snd-soc-dummy
nop_usb_xceiv.1    pwm-backlight      soc-audio.0
root@RPM /sys$ ls devices/system/
clocksource  cpu
3. /sys/dev
該目錄下存放主次設備號文件,其中分成字符設備、塊設備的主次設備號碼(major:minor)組成的文件名,該文件是鏈接文件並且鏈接到其真實的設備(/sys/devices)。
4. /sys/class
該目錄下包含所有注冊在kernel里面的設備類型,這是按照設備功能分類的設備模型,每個設備類型表達具有一種功能的設備。每個設備類型子目錄下都是這種設備類型的各種具體設備的符號鏈接,這些鏈接指向/sys/devices/下的具體設備。 設備類型和設備並沒有一一對應的關系,一個物理設備可能具備多種設備類型;一個設備類型只表達具有一種功能的設備,比如:系統所有輸入設備都會出現在/sys/class/input之下,而不論它們是以何種總線連接到系統的。
root@RPM /sys$ ls class
backlight        i2c-dev          net              spi_master
bdi              input            power_supply     tps65910-pwrkey
block            lcd              pwm              tty
devfreq          leds             regulator        ubi
display          mbox             rfkill           udc
firmware         mdio_bus         rtc              usb_device
gpio             mem              scsi_device      vc
graphics         misc             scsi_disk        video4linux
hwmon            mmc_host         scsi_host        vtconsole
i2c-adapter      mtd              sound
5. /sys/block
該目錄下的所有子目錄代表着系統中當前被發現的所有塊設備。按照功能來說放置在/sys/class下會更合適,但由於歷史遺留因素而一直存在於/sys /block,但從linux2.6.22內核開始這部分就已經標記為過去時,只有打開了CONFIG_SYSFS_DEPRECATED配置編譯才會有 這個目錄存在,並且其中的內容在從linux2.6.26版本開始已經正式移到了/sys/class/block,舊的接口/sys/block為了向后兼容而保留存在,但其中的內容已經變為了指向它們在/sys/devices/中真實設備的符號鏈接文件。
root@RPM /sys$ ls block/
loop0      loop3      loop6      mtdblock0  mtdblock3  mtdblock6  mtdblock9
loop1      loop4      loop7      mtdblock1  mtdblock4  mtdblock7
loop2      loop5      mmcblk0    mtdblock2  mtdblock5  mtdblock8
6. /sys/bus!!!
該目錄下的每個子目錄都是kernel支持並且已經注冊了的總線類型。這是內核設備按照總線類型分層放置的目錄結構,/sys/devices中的所有設備都是連接於某種總線之下的,bus子目錄下的每種具體總線之下可以找到每個具體設備的符號鏈接,一般來說每個子目錄(總線類型)下包含兩個子目錄,一個是 devices,另一個是drivers;其中devices下是這個總線類型下的所有設備,這些設備都是符號鏈接,它們分別指向真正的設備(/sys/devices/下);而drivers下是所有注冊在這個總線上的驅動,每個driver子目錄下 是一些可以觀察和修改的driver參數。
root@RPM /sys$ ls bus/
i2c       mdio_bus  platform  sdio      usb
iio       mmc       scsi      spi
應用1:msp700中計算電池電壓
PipeADC5 = popen("cat /sys/bus/iio/devices/iio\\:device0/in_voltage5_raw", "r");
應用2:改變提醒等級
echo 6 > /proc/sys/kernel/printk;
應用3:msp700中設置背光
echo 20 > /sys/class/backlight/pwm-backlight/brightness;
等價於:
echo 20 > /sys/bus/platform/devices/pwm-backlight/backlight/pwm-backlight/brightness;
 
7. /sys/fs
【空】
按照設計,該目錄使用來描述系統中所有的文件系統,包括文件系統本身和按照文件系統分類存放的已掛載點。
8. /sys/kernel
root@RPM /sys$ ls kernel/
debug          mm             profiling      uevent_seqnum
fscaps         notes          uevent_helper
這個目錄下存放的是內核中所有可調整的參數。
9. /sys/firmware
這里是系統加載固件機制的對用戶空間的接口,關於固件有專用於固件加載的一套API,在附錄 LDD3 一書中有關於內核支持固件加載機制的更詳細的介紹;
10. /sys/module 
該目錄下有系統中所有的模塊信息,不論這些模塊是以內聯(inlined)方式編譯到內核映像文件中還是編譯為外模塊(.ko文件),都可能出現在/sys/module中。即module目錄下包含了所有的被載入kernel的模塊。
root@RPM /sys$ ls module/
auth_rpcgss        lockd              rfkill             tea5761
block              loop               scsi_mod           tea5767
can                mailbox            snd                tuner_simple
cpuidle            mmc_core           snd_pcm            tuner_xc2028
cryptodev          mmcblk             snd_pcm_oss        ubi
cryptosoft         mousedev           snd_timer          ubifs
d_can              mt20xx             soundcore          usb_storage
d_can_platform     mtdoops            spurious           usbcore
dns_resolver       nf_conntrack       sunrpc             vt
g_mass_storage     nf_conntrack_ipv4  tcp_cubic          xc4000
hostap             nfs                tda18271           xc5000
input_polldev      ocf                tda827x            xz_dec
kernel             oprofile           tda8290
keyboard           printk             tda9887
11. /sys/power
該目錄是系統中的電源選項,對正在使用的power子系統的描述。這個目錄下有幾個屬性文件可以用於控制整個機器的電源狀態,如可以向其中寫入控制命令讓機器關機/重啟等等。
root@RPM /sys$ ls power/
pm_async      pm_test       state         wakeup_count
---------------------
作者:何妨一下樓
來源:CSDN
原文:https://blog.csdn.net/wade_510/article/details/72084006
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM