mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-20 14:16:33 +00:00
把opengrok.ringotek.cn替换为code.dragonos.org.cn (#484)
This commit is contained in:
kernel/src
arch
driver
filesystem
ipc
libs
net
process
syscall
@ -17,7 +17,7 @@ use super::AcpiManager;
|
||||
impl AcpiManager {
|
||||
/// 通过acpi来匹配驱动
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/acpi/bus.c#949
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/acpi/bus.c#949
|
||||
pub fn driver_match_device(
|
||||
&self,
|
||||
_driver: &Arc<dyn Driver>,
|
||||
@ -28,7 +28,7 @@ impl AcpiManager {
|
||||
return Ok(false);
|
||||
}
|
||||
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/acpi/bus.c#1286
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/acpi/bus.c#1286
|
||||
pub(super) fn bus_init(&self) -> Result<(), SystemError> {
|
||||
self.acpi_sysfs_init()?;
|
||||
|
||||
@ -42,7 +42,7 @@ impl AcpiManager {
|
||||
|
||||
/// ACPI总线
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/acpi/bus.c#1072
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/acpi/bus.c#1072
|
||||
#[derive(Debug)]
|
||||
pub(super) struct AcpiBus {
|
||||
private: SubSysPrivate,
|
||||
@ -68,7 +68,7 @@ impl Bus for AcpiBus {
|
||||
self.name()
|
||||
}
|
||||
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/acpi/bus.c#1056
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/acpi/bus.c#1056
|
||||
fn remove(&self, _device: &Arc<dyn Device>) -> Result<(), SystemError> {
|
||||
todo!("acpi_bus: remove")
|
||||
}
|
||||
@ -83,7 +83,7 @@ impl Bus for AcpiBus {
|
||||
|
||||
/// 通过acpi来匹配驱动
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/acpi/bus.c#1005
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/acpi/bus.c#1005
|
||||
fn match_device(
|
||||
&self,
|
||||
_device: &Arc<dyn Device>,
|
||||
@ -93,7 +93,7 @@ impl Bus for AcpiBus {
|
||||
return Ok(false);
|
||||
}
|
||||
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/acpi/bus.c#1019
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/acpi/bus.c#1019
|
||||
fn probe(&self, _device: &Arc<dyn Device>) -> Result<(), SystemError> {
|
||||
todo!("acpi_bus: probe")
|
||||
}
|
||||
@ -110,7 +110,7 @@ impl Bus for AcpiBus {
|
||||
/// todo: 仿照linux的acpi_device去设计这个trait
|
||||
///
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/include/acpi/acpi_bus.h#364
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/include/acpi/acpi_bus.h#364
|
||||
pub trait AcpiDevice: Device {}
|
||||
|
||||
/// Acpi驱动应当实现的trait
|
||||
@ -119,5 +119,5 @@ pub trait AcpiDevice: Device {}
|
||||
///
|
||||
/// todo: 仿照linux的acpi_driver去设计这个trait
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/include/acpi/acpi_bus.h#163
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/include/acpi/acpi_bus.h#163
|
||||
pub trait AcpiDriver: Driver {}
|
||||
|
@ -2,7 +2,7 @@ use alloc::sync::Arc;
|
||||
|
||||
use crate::driver::base::device::Device;
|
||||
|
||||
/// 参考: https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/acpi/glue.c#352
|
||||
/// 参考: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/acpi/glue.c#352
|
||||
pub fn acpi_device_notify(_dev: &Arc<dyn Device>) {
|
||||
return;
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ impl AcpiManager {
|
||||
///
|
||||
/// ## 参考资料
|
||||
///
|
||||
/// https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/acpi/bus.c#1390
|
||||
/// https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/acpi/bus.c#1390
|
||||
pub fn init(&self, rsdp_vaddr1: u64, rsdp_vaddr2: u64) -> Result<(), SystemError> {
|
||||
kinfo!("Initializing Acpi Manager...");
|
||||
|
||||
|
@ -79,7 +79,7 @@ impl AcpiManager {
|
||||
|
||||
/// 在 sysfs 中创建 ACPI 表目录
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/acpi/sysfs.c?fi=acpi_sysfs_init#488
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/acpi/sysfs.c?fi=acpi_sysfs_init#488
|
||||
fn acpi_tables_sysfs_init(&self) -> Result<(), SystemError> {
|
||||
// 创建 `/sys/firmware/acpi/tables` 目录
|
||||
let acpi_tables_kset = KSet::new("tables".to_string());
|
||||
@ -115,7 +115,7 @@ impl AcpiManager {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/acpi/sysfs.c?fi=acpi_sysfs_init#469
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/acpi/sysfs.c?fi=acpi_sysfs_init#469
|
||||
fn acpi_table_data_init(&self, _header: &SdtHeader) -> Result<(), SystemError> {
|
||||
// todo!("AcpiManager::acpi_table_data_init()")
|
||||
return Ok(());
|
||||
@ -237,7 +237,7 @@ impl BinAttribute for AttrAcpiTable {
|
||||
|
||||
/// 展示 ACPI 表的内容
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/acpi/sysfs.c?fi=acpi_sysfs_init#320
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/acpi/sysfs.c?fi=acpi_sysfs_init#320
|
||||
fn read(
|
||||
&self,
|
||||
_kobj: Arc<dyn KObject>,
|
||||
|
@ -36,7 +36,7 @@ pub struct CpuDeviceManager;
|
||||
impl CpuDeviceManager {
|
||||
/// 初始化设备驱动模型的CPU子系统
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/cpu.c?fi=get_cpu_device#622
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/cpu.c?fi=get_cpu_device#622
|
||||
pub fn init(&self) -> Result<(), SystemError> {
|
||||
let cpu_subsys = CpuSubSystem::new();
|
||||
let root_device = CpuSubSystemFakeRootDevice::new();
|
||||
@ -53,7 +53,7 @@ impl CpuDeviceManager {
|
||||
|
||||
/// cpu子系统
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/cpu.c?fi=get_cpu_device#128
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/cpu.c?fi=get_cpu_device#128
|
||||
#[derive(Debug)]
|
||||
struct CpuSubSystem {
|
||||
subsys_private: SubSysPrivate,
|
||||
|
@ -99,7 +99,7 @@ impl From<BusState> for DeviceState {
|
||||
/// 总线子系统的trait,所有总线都应实现该trait
|
||||
///
|
||||
/// 请注意,这个trait是用于实现总线子系统的,而不是总线驱动/总线设备。
|
||||
/// https://opengrok.ringotek.cn/xref/linux-6.1.9/include/linux/device/bus.h#84
|
||||
/// https://code.dragonos.org.cn/xref/linux-6.1.9/include/linux/device/bus.h#84
|
||||
pub trait Bus: Debug + Send + Sync {
|
||||
fn name(&self) -> String;
|
||||
/// Used for subsystems to enumerate devices like ("foo%u", dev->id).
|
||||
@ -256,7 +256,7 @@ impl BusManager {
|
||||
/// - 在bus和设备文件夹下,创建软链接
|
||||
/// - 把设备添加到它的总线的设备列表中
|
||||
///
|
||||
/// 参考: https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/bus.c?fi=bus_add_device#441
|
||||
/// 参考: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/bus.c?fi=bus_add_device#441
|
||||
///
|
||||
/// ## 参数
|
||||
///
|
||||
@ -290,7 +290,7 @@ impl BusManager {
|
||||
|
||||
/// 在总线上添加一个驱动
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/bus.c?fi=bus_add_driver#590
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/bus.c?fi=bus_add_driver#590
|
||||
pub fn add_driver(&self, driver: &Arc<dyn Driver>) -> Result<(), SystemError> {
|
||||
let bus = driver
|
||||
.bus()
|
||||
@ -350,7 +350,7 @@ impl BusManager {
|
||||
/// infrastructure, then register the children subsystems it has:
|
||||
/// the devices and drivers that belong to the subsystem.
|
||||
///
|
||||
/// 参考: https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/bus.c?fi=bus_register#783
|
||||
/// 参考: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/bus.c?fi=bus_register#783
|
||||
///
|
||||
/// todo: 增加错误处理逻辑
|
||||
pub fn register(&self, bus: Arc<dyn Bus>) -> Result<(), SystemError> {
|
||||
@ -468,7 +468,7 @@ impl BusManager {
|
||||
///
|
||||
/// - `driver` - 驱动实例
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/bus.c?fi=bus_remove_driver#666
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/bus.c?fi=bus_remove_driver#666
|
||||
pub fn remove_driver(&self, _driver: &Arc<dyn Driver>) {
|
||||
todo!("BusManager::remove_driver")
|
||||
}
|
||||
@ -487,7 +487,7 @@ impl BusManager {
|
||||
}
|
||||
}
|
||||
|
||||
/// 参考: https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/bus.c?r=&mo=5649&fi=241#684
|
||||
/// 参考: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/bus.c?r=&mo=5649&fi=241#684
|
||||
fn rescan_devices_helper(dev: &Arc<dyn Device>) -> Result<(), SystemError> {
|
||||
if dev.driver().is_none() {
|
||||
let need_parent_lock = dev
|
||||
@ -562,7 +562,7 @@ pub fn buses_init() -> Result<(), SystemError> {
|
||||
/// - 在bus和设备文件夹下,创建软链接
|
||||
/// - 把设备添加到它的总线的设备列表中
|
||||
///
|
||||
/// 参考: https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/bus.c?fi=bus_add_device#441
|
||||
/// 参考: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/bus.c?fi=bus_add_device#441
|
||||
///
|
||||
/// ## 参数
|
||||
///
|
||||
@ -579,7 +579,7 @@ pub fn bus_add_device(dev: &Arc<dyn Device>) -> Result<(), SystemError> {
|
||||
///
|
||||
/// - `dev` - 要被添加的设备
|
||||
///
|
||||
/// 参考: https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/bus.c?fi=bus_probe_device#478
|
||||
/// 参考: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/bus.c?fi=bus_probe_device#478
|
||||
pub fn bus_probe_device(dev: &Arc<dyn Device>) {
|
||||
kinfo!("bus_probe_device: dev: {:?}", dev.name());
|
||||
bus_manager().probe_device(dev);
|
||||
@ -601,7 +601,7 @@ impl Attribute for BusAttrDriversProbe {
|
||||
return SysFSOpsSupport::STORE;
|
||||
}
|
||||
|
||||
/// 参考: https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/bus.c?r=&mo=5649&fi=241#241
|
||||
/// 参考: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/bus.c?r=&mo=5649&fi=241#241
|
||||
fn store(&self, kobj: Arc<dyn KObject>, buf: &[u8]) -> Result<usize, SystemError> {
|
||||
let kset: Arc<KSet> = kobj.arc_any().downcast().map_err(|_| SystemError::EINVAL)?;
|
||||
let bus = bus_manager()
|
||||
@ -639,7 +639,7 @@ impl Attribute for BusAttrDriversAutoprobe {
|
||||
return SysFSOpsSupport::STORE | SysFSOpsSupport::SHOW;
|
||||
}
|
||||
|
||||
/// 参考: https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/bus.c?r=&mo=5649&fi=241#231
|
||||
/// 参考: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/bus.c?r=&mo=5649&fi=241#231
|
||||
fn store(&self, kobj: Arc<dyn KObject>, buf: &[u8]) -> Result<usize, SystemError> {
|
||||
if buf.len() == 0 {
|
||||
return Ok(0);
|
||||
@ -659,7 +659,7 @@ impl Attribute for BusAttrDriversAutoprobe {
|
||||
return Ok(buf.len());
|
||||
}
|
||||
|
||||
/// 参考: https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/bus.c?r=&mo=5649&fi=241#226
|
||||
/// 参考: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/bus.c?r=&mo=5649&fi=241#226
|
||||
fn show(&self, kobj: Arc<dyn KObject>, buf: &mut [u8]) -> Result<usize, SystemError> {
|
||||
let kset: Arc<KSet> = kobj.arc_any().downcast().map_err(|_| SystemError::EINVAL)?;
|
||||
let bus = bus_manager()
|
||||
@ -841,7 +841,7 @@ impl SubSystemManager {
|
||||
/// - `fake_root_dev` - 该子系统的伪根设备
|
||||
/// - `parent_of_root` - 该子系统的伪根设备的父级节点
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/bus.c?fi=subsys_system_register#1078
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/bus.c?fi=subsys_system_register#1078
|
||||
pub fn subsys_register(
|
||||
&self,
|
||||
subsys: &Arc<dyn Bus>,
|
||||
|
@ -40,7 +40,7 @@ impl DeviceManager {
|
||||
///
|
||||
/// ## 参考
|
||||
///
|
||||
/// https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/dd.c#1049
|
||||
/// https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/dd.c#1049
|
||||
pub fn device_attach(&self, dev: &Arc<dyn Device>) -> Result<bool, SystemError> {
|
||||
return self.do_device_attach(dev, false);
|
||||
}
|
||||
@ -49,7 +49,7 @@ impl DeviceManager {
|
||||
return self.do_device_attach(dev, true);
|
||||
}
|
||||
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/dd.c#978
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/dd.c#978
|
||||
fn do_device_attach(
|
||||
&self,
|
||||
dev: &Arc<dyn Device>,
|
||||
@ -137,7 +137,7 @@ impl DeviceManager {
|
||||
/// - Ok(true): 匹配成功
|
||||
/// - Ok(false): 没有匹配成功
|
||||
/// - Err(SystemError): 匹配过程中出现意外错误,没有匹配成功
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/dd.c#899
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/dd.c#899
|
||||
fn do_device_attach_driver(
|
||||
&self,
|
||||
driver: &Arc<dyn Driver>,
|
||||
@ -202,7 +202,7 @@ impl DeviceManager {
|
||||
///
|
||||
/// 使用device_manager().driver_attach()会更好
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/dd.c#496
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/dd.c#496
|
||||
pub fn device_bind_driver(&self, dev: &Arc<dyn Device>) -> Result<(), SystemError> {
|
||||
let r = driver_manager().driver_sysfs_add(dev);
|
||||
if let Err(e) = r {
|
||||
@ -221,14 +221,14 @@ impl DeviceManager {
|
||||
return r;
|
||||
}
|
||||
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/dd.c?fi=driver_attach#528
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/dd.c?fi=driver_attach#528
|
||||
fn unbind_cleanup(&self, dev: &Arc<dyn Device>) {
|
||||
dev.set_driver(None);
|
||||
// todo: 添加更多操作,清理数据
|
||||
}
|
||||
}
|
||||
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/dd.c#866
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/dd.c#866
|
||||
#[derive(Debug)]
|
||||
#[allow(dead_code)]
|
||||
struct DeviceAttachData {
|
||||
@ -296,7 +296,7 @@ impl DriverManager {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/dd.c?fi=driver_attach#1134
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/dd.c?fi=driver_attach#1134
|
||||
fn do_driver_attach(&self, device: &Arc<dyn Device>, driver: &Arc<dyn Driver>) -> bool {
|
||||
let r = self.match_device(driver, device).unwrap_or(false);
|
||||
if r == false {
|
||||
@ -341,7 +341,7 @@ impl DriverManager {
|
||||
/// - Err(ENODEV): 设备未注册
|
||||
/// - Err(EBUSY): 设备已经绑定到驱动上
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/dd.c?fi=driver_attach#802
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/dd.c?fi=driver_attach#802
|
||||
fn probe_device(
|
||||
&self,
|
||||
driver: &Arc<dyn Driver>,
|
||||
@ -371,7 +371,7 @@ impl DriverManager {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/dd.c?fi=driver_attach#584
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/dd.c?fi=driver_attach#584
|
||||
fn really_probe(
|
||||
&self,
|
||||
driver: &Arc<dyn Driver>,
|
||||
@ -461,7 +461,7 @@ impl DriverManager {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/dd.c?fi=driver_attach#434
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/dd.c?fi=driver_attach#434
|
||||
fn add_to_sysfs(&self, device: &Arc<dyn Device>) -> Result<(), SystemError> {
|
||||
let driver = device.driver().ok_or(SystemError::EINVAL)?;
|
||||
|
||||
@ -500,7 +500,7 @@ impl DriverManager {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/dd.c?fi=driver_attach#469
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/dd.c?fi=driver_attach#469
|
||||
fn remove_from_sysfs(&self, _device: &Arc<dyn Device>) {
|
||||
todo!("remove_from_sysfs")
|
||||
}
|
||||
@ -554,7 +554,7 @@ impl DriverManager {
|
||||
}
|
||||
|
||||
/// 当设备被成功探测,进行了'设备->驱动'绑定后,调用这个函数,完成'驱动->设备'的绑定
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/dd.c#393
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/dd.c#393
|
||||
fn driver_bound(&self, device: &Arc<dyn Device>) {
|
||||
if self.driver_is_bound(device) {
|
||||
kwarn!("driver_bound: device '{}' is already bound.", device.name());
|
||||
|
@ -172,7 +172,7 @@ impl DriverManager {
|
||||
///
|
||||
/// - driver: 驱动
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/driver.c#222
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/driver.c#222
|
||||
pub fn register(&self, driver: Arc<dyn Driver>) -> Result<(), SystemError> {
|
||||
let bus = driver
|
||||
.bus()
|
||||
@ -215,7 +215,7 @@ impl DriverManager {
|
||||
bus_manager().remove_driver(driver);
|
||||
}
|
||||
|
||||
/// 参考: https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/dd.c#434
|
||||
/// 参考: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/dd.c#434
|
||||
pub fn driver_sysfs_add(&self, _dev: &Arc<dyn Device>) -> Result<(), SystemError> {
|
||||
todo!("DriverManager::driver_sysfs_add()");
|
||||
}
|
||||
|
@ -347,7 +347,7 @@ impl From<DeviceState> for u32 {
|
||||
pub struct DeviceKObjType;
|
||||
|
||||
impl KObjType for DeviceKObjType {
|
||||
// https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/core.c#2307
|
||||
// https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/core.c#2307
|
||||
fn release(&self, kobj: Arc<dyn KObject>) {
|
||||
let dev = kobj.cast::<dyn Device>().unwrap();
|
||||
/*
|
||||
@ -420,7 +420,7 @@ impl DeviceManager {
|
||||
/// @parameter dev: 设备实例
|
||||
/// @return: None
|
||||
///
|
||||
/// https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/core.c#3398
|
||||
/// https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/core.c#3398
|
||||
///
|
||||
/// todo: 完善错误处理逻辑:如果添加失败,需要将之前添加的内容全部回滚
|
||||
#[inline]
|
||||
@ -553,7 +553,7 @@ impl DeviceManager {
|
||||
todo!()
|
||||
}
|
||||
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/dd.c?fi=driver_attach#542
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/dd.c?fi=driver_attach#542
|
||||
fn remove(&self, _dev: &Arc<dyn Device>) {
|
||||
todo!("DeviceManager::remove")
|
||||
}
|
||||
@ -759,21 +759,21 @@ impl DeviceManager {
|
||||
return kobj;
|
||||
}
|
||||
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/core.c?fi=device_links_force_bind#1226
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/core.c?fi=device_links_force_bind#1226
|
||||
pub fn device_links_force_bind(&self, _dev: &Arc<dyn Device>) {
|
||||
todo!("device_links_force_bind")
|
||||
}
|
||||
|
||||
/// 把device对象的一些结构进行默认初始化
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/core.c?fi=device_initialize#2976
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/core.c?fi=device_initialize#2976
|
||||
pub fn device_default_initialize(&self, dev: &Arc<dyn Device>) {
|
||||
dev.set_kset(Some(sys_devices_kset()));
|
||||
dev.set_kobj_type(Some(&DeviceKObjType));
|
||||
return;
|
||||
}
|
||||
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/dd.c?r=&mo=29885&fi=1100#1100
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/dd.c?r=&mo=29885&fi=1100#1100
|
||||
pub fn device_driver_attach(
|
||||
&self,
|
||||
_driver: &Arc<dyn Driver>,
|
||||
@ -782,7 +782,7 @@ impl DeviceManager {
|
||||
todo!("device_driver_attach")
|
||||
}
|
||||
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/dd.c?r=&mo=35401&fi=1313#1313
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/dd.c?r=&mo=35401&fi=1313#1313
|
||||
pub fn device_driver_detach(&self, _dev: &Arc<dyn Device>) {
|
||||
todo!("device_driver_detach")
|
||||
}
|
||||
|
@ -192,7 +192,7 @@ impl KObjectManager {
|
||||
let r = Self::create_dir(kobj.clone());
|
||||
|
||||
if let Err(e) = r {
|
||||
// https://opengrok.ringotek.cn/xref/linux-6.1.9/lib/kobject.c?r=&mo=10426&fi=394#224
|
||||
// https://code.dragonos.org.cn/xref/linux-6.1.9/lib/kobject.c?r=&mo=10426&fi=394#224
|
||||
if let Some(kset) = kobj.kset() {
|
||||
kset.leave(&kobj);
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ impl CompatibleTable {
|
||||
/// @parameter: None
|
||||
/// @return: None
|
||||
///
|
||||
/// 参考: https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/platform.c?fi=platform_bus_init#1511
|
||||
/// 参考: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/platform.c?fi=platform_bus_init#1511
|
||||
pub fn platform_bus_init() -> Result<(), SystemError> {
|
||||
let platform_device: Arc<PlatformBusDevice> = PlatformBusDevice::new(
|
||||
DevicePrivateData::new(
|
||||
|
@ -103,7 +103,7 @@ impl PlatformDeviceManager {
|
||||
}
|
||||
}
|
||||
|
||||
// todo: 插入资源: https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/platform.c?fi=platform_device_add#691
|
||||
// todo: 插入资源: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/platform.c?fi=platform_device_add#691
|
||||
let r = device_manager().add_device(pdev.clone() as Arc<dyn Device>);
|
||||
if r.is_ok() {
|
||||
pdev.set_state(DeviceState::Initialized);
|
||||
|
@ -39,7 +39,7 @@ pub struct PlatformDriverManager;
|
||||
impl PlatformDriverManager {
|
||||
/// 注册平台设备驱动
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/platform.c?fi=__platform_driver_register#861
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/platform.c?fi=__platform_driver_register#861
|
||||
pub fn register(&self, driver: Arc<dyn PlatformDriver>) -> Result<(), SystemError> {
|
||||
driver.set_bus(Some(Arc::downgrade(&(platform_bus() as Arc<dyn Bus>))));
|
||||
return driver_manager().register(driver as Arc<dyn Driver>);
|
||||
|
@ -111,7 +111,7 @@ impl Bus for PlatformBus {
|
||||
/// and compare it against the name of the driver. Return whether they match
|
||||
/// or not.
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/platform.c#1331
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/platform.c#1331
|
||||
///
|
||||
///
|
||||
fn match_device(
|
||||
@ -151,7 +151,7 @@ impl AttributeGroup for PlatformDeviceAttrGroup {
|
||||
}
|
||||
|
||||
fn attrs(&self) -> &[&'static dyn Attribute] {
|
||||
// todo: https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/platform.c?r=&mo=38425&fi=1511#1311
|
||||
// todo: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/platform.c?r=&mo=38425&fi=1511#1311
|
||||
return &[];
|
||||
}
|
||||
|
||||
|
@ -189,7 +189,7 @@ impl SubSysPrivate {
|
||||
}
|
||||
}
|
||||
|
||||
/// 参考: https://opengrok.ringotek.cn/xref/linux-6.1.9/include/linux/device.h#63
|
||||
/// 参考: https://code.dragonos.org.cn/xref/linux-6.1.9/include/linux/device.h#63
|
||||
pub trait SubSysInterface: Debug + Send + Sync {
|
||||
fn name(&self) -> &str;
|
||||
fn bus(&self) -> Option<Weak<dyn Bus>>;
|
||||
|
@ -3,6 +3,6 @@ use alloc::sync::Arc;
|
||||
use super::device::Device;
|
||||
|
||||
pub fn software_node_notify(_dev: &Arc<dyn Device>) {
|
||||
// todo: https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/base/swnode.c?fi=software_node_notify#1120
|
||||
// todo: https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/base/swnode.c?fi=software_node_notify#1120
|
||||
return;
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ pub trait UartDriver: Debug + Send + Sync + TtyDriver {
|
||||
|
||||
/// 串口端口应当实现的trait
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/include/linux/serial_core.h#428
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/include/linux/serial_core.h#428
|
||||
pub trait UartPort {
|
||||
fn iobase(&self) -> Option<usize> {
|
||||
None
|
||||
@ -55,7 +55,7 @@ pub(super) struct UartManager;
|
||||
impl UartManager {
|
||||
/// todo: 把uart设备注册到tty层
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/tty/serial/serial_core.c?fi=uart_register_driver#2720
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/tty/serial/serial_core.c?fi=uart_register_driver#2720
|
||||
pub fn register_driver(&self, _driver: &Arc<dyn UartDriver>) -> Result<(), SystemError> {
|
||||
return Ok(());
|
||||
}
|
||||
|
@ -79,7 +79,7 @@ impl Serial8250Manager {
|
||||
///
|
||||
/// 应当在设备驱动模型初始化之后调用这里
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/tty/serial/8250/8250_core.c?r=&mo=30224&fi=1169#1169
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/tty/serial/8250/8250_core.c?r=&mo=30224&fi=1169#1169
|
||||
pub fn init(&self) -> Result<(), SystemError> {
|
||||
// 初始化serial8250 isa设备
|
||||
let serial8250_isa_dev = Serial8250ISADevices::new();
|
||||
@ -123,7 +123,7 @@ impl Serial8250Manager {
|
||||
|
||||
/// 把uart端口与uart driver、uart device绑定
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/tty/serial/8250/8250_core.c?r=&mo=30224&fi=1169#553
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/tty/serial/8250/8250_core.c?r=&mo=30224&fi=1169#553
|
||||
fn register_ports(
|
||||
&self,
|
||||
uart_driver: &Arc<Serial8250ISADriver>,
|
||||
@ -134,7 +134,7 @@ impl Serial8250Manager {
|
||||
|
||||
/// 把uart端口与uart driver绑定
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/drivers/tty/serial/serial_core.c?fi=uart_add_one_port#3048
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/drivers/tty/serial/serial_core.c?fi=uart_add_one_port#3048
|
||||
pub(self) fn uart_add_one_port(
|
||||
&self,
|
||||
_uart_driver: &Arc<Serial8250ISADriver>,
|
||||
@ -344,7 +344,7 @@ impl InnerSerial8250ISADevices {
|
||||
}
|
||||
|
||||
/// Serial 8250平台设备的id
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/include/linux/serial_8250.h?fi=PLAT8250_DEV_LEGACY#49
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/include/linux/serial_8250.h?fi=PLAT8250_DEV_LEGACY#49
|
||||
#[derive(Debug)]
|
||||
#[repr(i32)]
|
||||
enum Serial8250PlatformDeviceID {
|
||||
|
@ -9,7 +9,7 @@ use super::tty_device::TtyDevice;
|
||||
/// TTY 驱动
|
||||
///
|
||||
///
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/include/linux/tty_driver.h#434
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/include/linux/tty_driver.h#434
|
||||
pub trait TtyDriver: Debug + Send + Sync + Driver {
|
||||
fn driver_name(&self) -> &str;
|
||||
fn dev_name(&self) -> &str;
|
||||
@ -42,20 +42,20 @@ pub struct TtyDriverMetadata {
|
||||
subtype: TtyDriverSubtype,
|
||||
}
|
||||
|
||||
/// https://opengrok.ringotek.cn/xref/linux-6.1.9/include/linux/tty_driver.h#411
|
||||
/// https://code.dragonos.org.cn/xref/linux-6.1.9/include/linux/tty_driver.h#411
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub enum TtyDriverType {}
|
||||
|
||||
/// https://opengrok.ringotek.cn/xref/linux-6.1.9/include/linux/tty_driver.h#412
|
||||
/// https://code.dragonos.org.cn/xref/linux-6.1.9/include/linux/tty_driver.h#412
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub enum TtyDriverSubtype {}
|
||||
|
||||
bitflags! {
|
||||
/// https://opengrok.ringotek.cn/xref/linux-6.1.9/include/linux/tty_driver.h?fi=SERIAL_TYPE_NORMAL#492
|
||||
/// https://code.dragonos.org.cn/xref/linux-6.1.9/include/linux/tty_driver.h?fi=SERIAL_TYPE_NORMAL#492
|
||||
pub struct TtyDriverFlags: u64 {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/// 参考 https://opengrok.ringotek.cn/xref/linux-6.1.9/include/linux/tty_driver.h#350
|
||||
/// 参考 https://code.dragonos.org.cn/xref/linux-6.1.9/include/linux/tty_driver.h#350
|
||||
pub trait TtyDriverOperations {}
|
||||
|
Reference in New Issue
Block a user