The user framework module complies with s3ip sysfs specification (#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
This commit is contained in:
tianshangfei 2022-12-14 22:34:55 +08:00 committed by GitHub
parent 8fe4fab89f
commit f7d80e63db
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 182 additions and 0 deletions

View File

@ -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

View File

@ -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")

View File

@ -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"
}
]
}

View File

@ -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