【问题标题】:Check a kernel extension is loaded检查内核扩展是否已加载
【发布时间】:2020-03-20 20:17:16
【问题描述】:

我必须实现一个在系统中安装新内核扩展的函数。在安装扩展之前,我想检查它是否已经从另一个位置安装。由于我不知道其他位置,我无法使用 sysconfig 库函数。

我查过了

truss genkex

看看其他工具是如何做到这一点的。唯一有点有趣的系统调用是 read_sysconfig。不幸的是,我没有找到文档。

有什么想法吗?

【问题讨论】:

    标签: aix kernel-extension


    【解决方案1】:

    这里我有一个示例函数,它打印所有加载的内核扩展:

    #define BUFF_SIZE       10241024U
    
    static void testExtension() {
        void *buffer = calloc( 1, BUFF_SIZE );
        if( buffer ) {
            struct ld_info *xInfo;
    
            int result = loadquery(L_GETKERNINFO, buffer, BUFF_SIZE);
    
            xInfo = buffer;
    
            while( xInfo ) {
                printf( ">>>>>>> >%s< %d\n", xInfo->ldinfo_filename, result );
    
                uint offset = xInfo->ldinfo_next;
                xInfo = offset ? (char*)xInfo + offset : NULL;
            }
    
            free( buffer );
        }
    }
    

    【讨论】:

      【解决方案2】:

      你搜索的函数是SYS_QUERYLOAD sysconfig操作和here你可以找到更多的信息

      SYS_QUERYLOAD sysconfig 操作执行查询操作以 确定是否已加载给定的目标文件。这个目标文件是 由传入的 cfg_load 结构中的路径字段指定 parmp 参数。此操作使用相同的 cfg_load 为 SYS_KLOAD (SYS_KLOAD sysconfig 操作)操作。

      如果指定的目标文件没有加载,则 cfg_load 结构在返回时设置为值 0。否则,该 模块的内核模块 ID 在 kmid 字段中返回。如果 模块的多个实例已加载到内核中, 返回最近加载的模块 ID。

      cfg_load 结构中的 libpath 字段不用于此 选项。

      您还可以使用此脚本检查 odm 数据库中的对象。

      for i in 1 2 3
      do
          odmget -q phase=$i Config_Rules
      done
      

      并检查文件/sbin/rc.boot(其中可能包含某些模块的负载

      【讨论】:

      • 我见过这个功能。它需要扩展的完整路径或在 LIBPATH 中搜索扩展。
      • @MartinGäckler,检查我更新的答案以及检查模块的其他方法
      • 你的意思是odmget? opdget 在我的系统上是未知的。我将检查文件 /etc/objrepos/Config_Rules。也许这可能是一个解决方案。但我仍然想知道 genkex 是如何工作的
      • 我可以使用的另一个例程是将 L_GETKERNINFO 作为第一个参数传递的 loadquery。这就是,genkex 也用什么,我还是要搞清楚,什么 struct 必须作为第二个参数传递。
      • 根据 /usr/include/sys/ldr.h loadquery 需要一个结构体 __ld_xinfo64,该结构体在哪里定义?
      猜你喜欢
      • 2015-04-26
      • 2017-07-19
      • 2021-08-08
      • 1970-01-01
      • 2018-08-22
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      • 2017-12-30
      相关资源
      最近更新 更多