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