c_cpp Solaris和Illumos libdevinfo用法示例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp Solaris和Illumos libdevinfo用法示例相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include <libdevinfo.h>
#define	DISK_DRIVER	"sd"	/* driver name */
// cc [ flag... ] file... -ldevinfo [ library... ]
// #include <libdevinfo.h>
//
void
prt_diskinfo(di_node_t node)
{
    int instance;
        char *phys_path;

    /*
     * If the device node exports no minor nodes,
     * there is no physical disk.
     */
     if (di_minor_next(node, DI_MINOR_NIL) == DI_MINOR_NIL) {
              return;
         }

         instance = di_instance(node);
         phys_path = di_devfs_path(node);
         printf("%s%d: %s\n", DISK_DRIVER, instance, phys_path);
         di_devfs_path_free(phys_path);
}

void
walk_disknodes(di_node_t node)
{
        node = di_drv_first_node(DISK_DRIVER, node);
        while (node != DI_NODE_NIL) {
             prt_diskinfo(node);
             node = di_drv_next_node(node);
        }
}

main()
{
    di_node_t root_node;
    if ((root_node = di_init("/", DINFOCPYALL)) == DI_NODE_NIL) {
        fprintf(stderr, "di_init() failed\n");
        exit(1);
    }
        walk_disknodes(root_node);
        di_fini(root_node);
}
#include <stdio.h>
#include <libdevinfo.h>
// cc [ flag... ] file... -ldevinfo [ library... ]
// #include <libdevinfo.h>
//
int 
prt_nodename(di_node_t node, void *arg)
{
     printf("%s\n", di_node_name(node));
     return (DI_WALK_CONTINUE);
}

main()
{
     di_node_t root_node;
     if((root_node = di_init("/", DINFOSUBTREE)) == DI_NODE_NIL) {
           fprintf(stderr, "di_init() failed\n");
           exit(1);
     }
     di_walk_node(root_node, DI_WALK_CLDFIRST, NULL, prt_nodename);
     di_fini(root_node);
}

以上是关于c_cpp Solaris和Illumos libdevinfo用法示例的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp [illumos和bsros datalink layer]用于观察dladm和libdladm行为的Dtrace片段#tags:dladm,datalink,数据链管理,

c_cpp Solaris权限代码段

在 Solaris 10 系统上编译并使用SQLite-3.4.2

在 Solaris 10 系统上编译并使用SQLite-3.4.2

在 Solaris 10 系统上编译并使用SQLite-3.4.2

solaris x86安装ORACLE 11.2.0.3软件时因SWAP不足报错: INFO: ld: fatal: mmap anon failed