c
wllabs
一直努力学习和工作中,虽然不如意,但是还是要努力,希望以后越来越好。求各种机会。
展开
-
基于diagnose-tools 学习字符设备
基于diagnose-tools 学习字符设备1、设备模型分析 关键数据结构 字符设备模型组件 devices 组件 subsystem 内核对象子系统 classes 组件2、字符设备驱动开发 字符设备驱动关键数据结构 字符设备驱动的组成部分代码流程分析...原创 2020-12-30 14:13:30 · 849 阅读 · 0 评论 -
librbd 简单学习例子
去年写了个librbd的读写demo,今天找了好久才找到,写到博客里记录下熟悉librbd的接口,从一个demo 开始是个不错的选择/* 注释就不详细写了,代码比较简单 */#include <rados/librados.h>#include <rbd/librbd.h>#include <stdio.h>#include <stdlib.h>rados_t init_rados() { // we will use a.原创 2020-10-23 17:58:57 · 566 阅读 · 0 评论 -
linux c open direct 方式写入,memalign
前段时间准备以direct方式写入文件,结果一直写不进去内容,后面发现必须要512字节对齐才可以。使用new或者malloc分配的内存是无法在O_DIRECT选项下工作的,必须使用posix_memalign(或valloc, memalign,这两个函数已经被标记为废弃)。读写操作的传输数据大小和缓冲区地址都需要按照一定的规则对齐:Linux下,对于不同的文件系统和内核版本,需要的...原创 2019-09-12 12:57:31 · 919 阅读 · 0 评论 -
libvirt event注册,poll触发 流程和代码讲解。
poll 大概会注册以下event事件的回调virEventPollHandleWakeup #addEvent updateEvent rmoveEvent。所以一般都是第一个.这个用到管道,fd是管道。virNetDaemonSignalEvent #注册信息处理的,使用管道。fd是管道。virNetSocketEventHandle #所以和libvirtd建...原创 2019-08-06 22:14:31 · 1213 阅读 · 0 评论 -
linux 生成core 文件,并调试
本文讲述了实现core文件自动生成的配置方法,具体执行步骤如下:1.编辑环境配置文件,让shell启动时自动设置ulimit登陆 LINUX 服务器,任意位置键入 echo"ulimit -c 1024" >> /etc/profile 退出 LINUX 重新登陆 LINUX键入 ulimit -c, 如果显示 1024 那么说明 coredump 已...原创 2018-01-26 16:03:31 · 807 阅读 · 0 评论 -
libvirt q35 报错
如果是Q35,PCIeRoot 默认就是 true。查找Controller,从def里的controllers里查找出符合 type和idx 的Controller的位置intvirDomainControllerFind(const virDomainDef *def, int type,原创 2017-11-13 18:31:18 · 3349 阅读 · 0 评论 -
解析 virDomainDef 结构体
virDomainDef 结构体/* * Guest VM main configuration * * NB: if adding to this struct, virDomainDefCheckABIStability * may well need an update */typedef struct _virDomainDef virDomainDef;type原创 2017-11-13 10:37:29 · 558 阅读 · 1 评论 -
bool + str
在里面竟然还有个 true 和 flase, 而且竟然还可以和字符串相加,真是奇怪了#include #include int main(){ char strtrue, strfalse; true; false; strtrue = '0' + true; strfalse = '0' + false;原创 2017-09-12 12:09:57 · 374 阅读 · 0 评论 -
open openat
static void transfer_vcpu(GuestLogicalProcessor *vcpu, bool sys2vcpu, Error **errp){ char *dirpath; int dirfd; dirpath = g_strdup_printf("/sys/devices/s原创 2017-09-12 11:34:02 · 688 阅读 · 0 评论 -
linux c 定位读取数据pread
今天看代码发现有个 pread,发现这个好用啊。是一个原子操作,集成了 lseek和read,不会被中断。 NAME pread, read - read from a fileSYNOPSIS #include ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset原创 2017-09-12 11:18:16 · 808 阅读 · 0 评论 -
glibc g_strsplit 切割字符串
在Python中,如果要求当前时间的unix时间戳,我特别喜欢这么用:str = "aaa,bbb,ccc,ddd"arr = str.split(",")print arrpython这个切割字符串特别好用,连长度都不用指定,很方便,不用担心踩地雷,但是C/CPP中,就没有了,这点比较遗憾。虽然标准的c库里没有,但是 glibc 这个强大的库里有一个 g_strspl原创 2017-09-07 12:11:07 · 4125 阅读 · 0 评论 -
定义一个循环的 loop 宏方法
有一些老外的开源项目里经常能见到 loop 宏定义,总结下#include #define loop(x,n) for (int x = 0; x < n; ++x)int main() { int i; loop(i, 10) { printf("%d\n", i); } return 0;}gcc loo原创 2017-09-07 11:13:33 · 3821 阅读 · 0 评论 -
g_strdup_printf
g_strdup_printf ()gchar *g_strdup_printf (const gchar *format, ...);Similar to the standard C sprintf() function but safer, since it calculates the maximum sp原创 2017-09-05 14:21:45 · 5983 阅读 · 0 评论