forked from sonic-net/sonic-buildimage
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
The user framework module complies with s3ip sysfs specification (son…
…ic-net#12894) Why I did it The user framework module complies with s3ip sysfs specification How I did it 1、 create a s3ip_sysfs service 2、 the s3ip_sysfs service call the “s3ip_sysfs_tool.sh” to install kernel module and run s3ip_load.py 3、 s3ip_load.py will parse the s3ip_sysfs_conf.json configuration file and create /sys_switch/ directory How to verify it A demo driver base on this framework will display the sysfs node wich conform to the s3ip sysfs specification
- Loading branch information
1 parent
f6ff26b
commit 6fabb5d
Showing
4 changed files
with
182 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
[Unit] | ||
Description=s3ip sysfs service | ||
Wants=network-online.target | ||
After=network-online.target | ||
|
||
[Service] | ||
Type=oneshot | ||
User=root | ||
ExecStart=/usr/bin/s3ip_sysfs_tool.sh start | ||
ExecStop=/usr/bin/s3ip_sysfs_tool.sh stop | ||
RemainAfterExit=yes | ||
|
||
[Install] | ||
WantedBy=default.target | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
#!/usr/bin/python | ||
# -*- coding: UTF-8 -*- | ||
import json | ||
import os | ||
|
||
if __name__ == '__main__': | ||
os.system("sudo rm -rf /sys_switch;sudo mkdir -p -m 777 /sys_switch") | ||
|
||
with open('/etc/s3ip/s3ip_sysfs_conf.json', 'r') as jsonfile: | ||
json_string = json.load(jsonfile) | ||
for s3ip_sysfs_path in json_string['s3ip_syfs_paths']: | ||
#print('path:' + s3ip_sysfs_path['path']) | ||
#print('type:' + s3ip_sysfs_path['type']) | ||
#print('value:' + s3ip_sysfs_path['value']) | ||
|
||
if s3ip_sysfs_path['type'] == "string" : | ||
(path, file) = os.path.split(s3ip_sysfs_path['path']) | ||
#创建文件 | ||
command = "sudo mkdir -p -m 777 " + path | ||
#print(command) | ||
os.system(command) | ||
command = "sudo echo " + "\"" + s3ip_sysfs_path['value'] + "\"" + " > " + s3ip_sysfs_path['path'] | ||
#print(command) | ||
os.system(command) | ||
elif s3ip_sysfs_path['type'] == "path" : | ||
command = "sudo ln -s " + s3ip_sysfs_path['value'] + " " + s3ip_sysfs_path['path'] | ||
#print(command) | ||
os.system(command) | ||
else: | ||
print('error type:' + s3ip_sysfs_path['type']) | ||
os.system("tree -l /sys_switch") | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
{ | ||
"s3ip_syfs_paths": [ | ||
{ | ||
"path": "/sys_switch/temp_sensor", | ||
"type" : "path", | ||
"value" : "/sys/s3ip/temp_sensor", | ||
"description": "temperature information" | ||
}, | ||
{ | ||
"path": "/sys_switch/vol_sensor", | ||
"type" : "path", | ||
"value" : "/sys/s3ip/vol_sensor", | ||
"description": "voltage sensor information" | ||
}, | ||
{ | ||
"path": "/sys_switch/syseeprom", | ||
"type" : "path", | ||
"value" : "/sys/s3ip/syseeprom", | ||
"description": "ONIE EEPROM" | ||
}, | ||
{ | ||
"path": "/sys_switch/fan", | ||
"type" : "path", | ||
"value" : "/sys/s3ip/fan", | ||
"description": "fan information" | ||
}, | ||
{ | ||
"path": "/sys_switch/psu", | ||
"type" : "path", | ||
"value" : "/sys/s3ip/psu", | ||
"description": "PSU information" | ||
}, | ||
{ | ||
"path": "/sys_switch/transceiver", | ||
"type" : "path", | ||
"value" : "/sys/s3ip/transceiver", | ||
"description": "transceiver information" | ||
}, | ||
{ | ||
"path": "/sys_switch/sysled", | ||
"type" : "path", | ||
"value" : "/sys/s3ip/sysled", | ||
"description": "SYS LED information" | ||
}, | ||
{ | ||
"path": "/sys_switch/fpga", | ||
"type" : "path", | ||
"value" : "/sys/s3ip/fpga", | ||
"description": "FPGA information" | ||
}, | ||
{ | ||
"path": "/sys_switch/cpld", | ||
"type" : "path", | ||
"value" : "/sys/s3ip/cpld", | ||
"description": "CPLD information" | ||
}, | ||
{ | ||
"path": "/sys_switch/watchdog", | ||
"type" : "path", | ||
"value" : "/sys/s3ip/watchdog", | ||
"description": "watchdog information" | ||
}, | ||
{ | ||
"path": "/sys_switch/curr_sensor", | ||
"type" : "path", | ||
"value" : "/sys/s3ip/curr_sensor", | ||
"description": "current sensor information" | ||
}, | ||
{ | ||
"path": "/sys_switch/slot", | ||
"type" : "path", | ||
"value" : "/sys/s3ip/slot", | ||
"description": "slot information" | ||
} | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
#! /bin/bash | ||
|
||
s3ip_start(){ | ||
sudo insmod /lib/modules/s3ip/s3ip_sysfs.ko | ||
sudo insmod /lib/modules/s3ip/syseeprom_device_driver.ko | ||
sudo insmod /lib/modules/s3ip/fan_device_driver.ko | ||
sudo insmod /lib/modules/s3ip/cpld_device_driver.ko | ||
sudo insmod /lib/modules/s3ip/sysled_device_driver.ko | ||
sudo insmod /lib/modules/s3ip/psu_device_driver.ko | ||
sudo insmod /lib/modules/s3ip/transceiver_device_driver.ko | ||
sudo insmod /lib/modules/s3ip/temp_sensor_device_driver.ko | ||
sudo insmod /lib/modules/s3ip/vol_sensor_device_driver.ko | ||
sudo insmod /lib/modules/s3ip/fpga_device_driver.ko | ||
sudo insmod /lib/modules/s3ip/watchdog_device_driver.ko | ||
sudo insmod /lib/modules/s3ip/curr_sensor_device_driver.ko | ||
sudo insmod /lib/modules/s3ip/slot_device_driver.ko | ||
sudo rm -rf /sys_switch | ||
sudo /usr/bin/s3ip_load.py | ||
echo "s3ip service start" | ||
} | ||
s3ip_stop(){ | ||
sudo rmmod slot_device_driver | ||
sudo rmmod curr_sensor_device_driver | ||
sudo rmmod watchdog_device_driver | ||
sudo rmmod fpga_device_driver | ||
sudo rmmod vol_sensor_device_driver | ||
sudo rmmod temp_sensor_device_driver | ||
sudo rmmod transceiver_device_driver | ||
sudo rmmod psu_device_driver | ||
sudo rmmod sysled_device_driver | ||
sudo rmmod cpld_device_driver | ||
sudo rmmod fan_device_driver | ||
sudo rmmod syseeprom_device_driver | ||
sudo rmmod s3ip_sysfs | ||
sudo rm -rf /sys_switch | ||
echo "s3ip service stop" | ||
|
||
} | ||
|
||
case "$1" in | ||
start) | ||
s3ip_start | ||
;; | ||
stop) | ||
s3ip_stop | ||
;; | ||
status) | ||
sudo tree -l /sys_switch | ||
;; | ||
restart) | ||
s3ip_stop | ||
s3ip_start | ||
;; | ||
*) | ||
echo "Usage: $0 {start|stop|status|restart}" | ||
exit 1 | ||
esac | ||
exit | ||
|