4
1
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:
LoGin
2024-01-01 11:53:49 +08:00
committed by GitHub
parent c566df451c
commit e7071df6a4
36 changed files with 96 additions and 96 deletions

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