linux
文章平均质量分 63
般若程序蝉
博客网站(prajna.top),开源软件的爱好者和开发者,希望同大家一起交流学习,谢绝无效内容。
展开
-
linux的睡眠框架及实现
待机后,系统就挂在当前的执行位置,当用户唤醒(按电源键或者键盘)系统时,bios先恢复CPU,然后CPU从当前位置开始唤醒系统,唤醒刚好是一个相反的过程,先从架构相关的底层开始,逐级唤醒系统,主要的代码流程是在 suspend_enter( )的后半段,也是从suspend_ops->enter( ) 开始,这个函数的退出,表示系统已开始唤醒,接着syscore_resume( ) -->... --> ahci_pci_device_resume ( ) ....;需配置CONFIG_SUSPEND。原创 2023-02-09 20:56:42 · 1150 阅读 · 0 评论 -
如何使用qemu调试内核
调试内核需要一个基本的文件系统,我们可以使用简单的 ramdisk来作为这个文件系统,如果,需要测试一些其它应用程序,我们还需要创建一个大一点根文件系统。也就是内核启动时的initrd.img,可以使用busybox来制作这个小文件系统,源码目录的INSTALL文件有编译和安装的说明。把 busybox拷贝到 initrd根目录,并切换到initrd根目录。创建init: ln -s bin/busybox init创建系统文件夹:mkdir dev etc proc sys配置etc目录。原创 2022-12-01 20:09:46 · 2315 阅读 · 0 评论 -
linux系统如何重置密码
以debian/ubuntu 为例说明一下,忘记用户密码后,如何重置密码。原创 2022-08-08 20:22:24 · 2286 阅读 · 0 评论 -
如何更新内核
安装内核:cp -av arch/x86/boot/bzImage /boot/vmlinuz-{ver}创建initrd: update-initramfs –c –k {ver}更新initrd :update-initramfs –u –k {ver}原创 2022-07-18 22:35:59 · 1258 阅读 · 0 评论 -
如何提交patch 到内核
内核的开发是在邮件列表来进行的,通过一个个patch来更新内核,patch即是代码又是文档。我以提交的两个内核bug为例,来具体说明一下这个过程。先同步本地内核源码,确保最新代码上还能复现对应的问题。阅读Documentation/process/submitting-pathes.rst 。 代码规范需符合 coding-style.rst,Linux 的缩进使用的是TAB(8个空格)。尽量使用祈使语句,说明碰到了什么问题,处理措施是什么。Subject: 对代码做了什么改变如:“fix sparse/b原创 2022-07-11 23:39:13 · 1514 阅读 · 0 评论 -
进程的内存占用情况分析
我们都知道进程运行时,会有一个栈空间(stack)和一个堆空间(heap), 栈空间用于函数调用和局部变量,堆空间是C语言的 malloc 来分配的全局指针。这些都是进程的私有数据,除了这些,还有映射进来的动态库,进程间的共享内存等共享空间。另外,操作系统还支持预留虚拟地址空间的功能(延迟分配),也就是在读写该内存的时候,操作系统才进行物理内存的分配,因此进程占用的空间情况还是比较复杂的。下面简单地说明一下。Linux VSZ:Virtual Memory Size(虚拟内存大小)。进程占用的全部地原创 2022-02-16 18:55:32 · 4722 阅读 · 0 评论 -
在子目录使用GtkBuilder
假定GTK app的目录在 gui/gtk 子目录下,也就是 GTK_APP_PATH= gui/gtk第一步:在GTK_APP_PATH目录下,创建 aimapp.gresource.xml 文件,内容如下:<?xml version="1.0" encoding="UTF-8"?><gresources> <gresource prefix="/org/gtk/aimapp"> <file preprocess="xml-stripbla原创 2020-09-14 14:20:54 · 478 阅读 · 0 评论 -
Linux 设备驱动开发实例
编译和运行驱动编译要用到kernel的Makefile文件 — — 也就是源码树的编译系统。因此,源码需要被配置和编译,以ubuntu自带的源码为例:编译外部模块(.ko)的编译命令是:$ make -C <path_to_kernel_src> M=$PWD也就是进入到kernel目录,利用kbuild系统来编译驱动文件。obj-m 告诉编译系统需要编译成一个...原创 2019-10-25 16:08:03 · 629 阅读 · 0 评论 -
Linux 驱动架构简析
发表于我的博客网站(prajna.top): http://prajna.top/doc/3/3049 欢迎大家前去交流。这篇文章不是驱动开发教程,只不过作者读过内核源码后,想对知识做一个梳理,从源码的角度分析一下Linux的驱动架构的实现。行文也不大讲究,希望可以把问题说清楚。本文使用的kernel 源码版本是 3.13.3。学习kernel虽然没有捷径,但是有合理的方法。1) 首先...原创 2019-09-28 14:42:45 · 650 阅读 · 0 评论 -
xx.cpp undefined reference to xx 解决办法
网上相关的文章很多, 普通原因就那么两点。 1)link的时候,添加相应的 so,.a 。 2) so .a 文件次序不对。 一般被调用者放到调用者的后面——有点饶,总之问题发生, 调换下 次序,可以解决。 有时候,仍然会有一些莫名奇妙的 undefined reference to xx 出现,原因不在上面2点内—— so/.a 文件已经全部添加, 相对原创 2013-03-13 10:35:38 · 1533 阅读 · 0 评论 -
MPlayer软件研究篇(一)──输出驱动
linux下面最好用的播放器当属mplayer了。一些多媒体的嵌入式产品都有用到mplayer。有的“方案“提供商,也会在mplayer上面开发,增加自己的解码器和输出驱动,然后提供下它的代理公司。究其原因还是mplayer开放的架构,很适合去些二次开发的工作,你可以增加自己的解码模块,输出驱动模块,视频滤镜等而不会破坏mplayer的整体架构。 目前有一个需求,用mplayer来作为另一个软件的后端视频播放器。 mplayer自身有提供一个slave模式作为后台进程,而不去拦截窗口原创 2010-11-26 16:00:00 · 7090 阅读 · 12 评论 -
xemacs中文乱码问题
1)显示中文乱码。 (setup-chinese-gb-environment) (set-language-environment "Chinese-GB") 或者M-x setup-chinese-gb-environment M-x set-language-environment 回车 再输入Chinese原创 2010-03-30 19:04:00 · 1812 阅读 · 0 评论 -
PKG_CONFIG_PATH和PKG_CONFIG的路径设置问题
最近,需要使用cscope功能,重新编译安装了一遍gvim。 第一次./configure的时候,进行到 check gtk --version 时,机器明显变慢,并停了下来,鼠标及其不灵活,估计是碰到死循环或者死锁之类的事情了,然后,慢慢地机器死掉。重启了一次。再重新./configure的时候,没有问题了,但是gvim的界面非常难看,感觉好象不是gnome的界面。仔细查看了一下./co原创 2008-12-16 18:28:00 · 51735 阅读 · 3 评论 -
mplayerplug-in播放不了www.1ting.com音乐的问题
我使用的是firefox浏览器,编译安装mplayerplug-in插件时,碰到一个很奇怪的问题: 之前,由于PKG_CONFIG_PATH路径设置不正确,编译安装后,可以正常播放一听音乐网里的音乐,可是没有界面。今天,设置好PKG_CONFIG_PATH路径后,重新编译了一遍。结果界面是有了,可是播放不了一听音乐网里的音乐了。点击链接后,马上就stop停掉了。 于是,决定使用shel原创 2008-12-16 17:40:00 · 2379 阅读 · 0 评论