自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

shyodx的专栏

Stay Hungry, Stay Fool.

  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 POSIX消息队列 发送接收简单子

Linux的函数库提供有两种消息队列,一种是POSIX消息队列,另一种是SYS V消息队列。这里介绍POSIX消息队列。涉及到的函数主要有:mq_open() - 创建消息队列mq_close() - 关闭消息队列mq_send() - 往消息队列里发送消息mq_receive() - 从消息队列里接受消息消息队列实际上是一个文件,因此需要消息队列虚拟文件系统的支持。通常系统启

2012-12-22 15:23:12 1260

原创 iptables IP转发

有两台服务器:A:219.246.xxx.yyy。这是一个内网地址,外网无法访问。B:202.201.aaa.bbb。这是一个公网地址,它和xxx.lzu.edu.cn这个域名绑定。两台服务器上都跑了一个HTTP的服务,他们之间可以互相访问。现在希望访问mmm.lzu.edu.cn时,能自动跳转到219.246.xxx.yyy上,因此可以做IP转发,或叫IP映射。来使所有发到202

2012-09-14 09:09:31 5238

原创 结构体中的零长度数组

参考:http://hi.chinaunix.net/?uid-21744621-action-viewspace-itemid-48823struct node { int len; int array[];};这种零长度的的数组是为了方便结构体长度的动态扩展。一个 node 的结构体,它的长度并不包括 array[]。但是如果使用 ma

2012-04-19 10:18:31 1199

原创 关于 XtratuM 的中断接管过程

这里分析的是 XtratuM 1.0 的代码。关于 XM 中断接管的代码主要在 arch/$ARCH/kernel/irq.c ($ARCH = i386) 中。还有一部分在 patch 文件中,不过那个貌似关系不是很大,主要是替换了某些 cli 和 sti 指令,但是这些替换后的代码实质上和 cli、sti 的作用是一样的,所以我也有点奇怪为什么要有这样的替换,貌似不替换也是可以的……

2012-04-15 13:23:06 934

原创 PowerPC OpenFirmware

参考:Documentation/devicetree/booting-without-of.txtOF 是在 PowerPC 上,用于在系统加点或者重启时,初始化设备的,这些都是为操作系统的启动做准备工作。bootloader 会把系统中某些设备组织在一个树形表中,然后会把这个表传给内核。参数的传递是通过寄存器完成的,其中: r3:指向 device-tree block

2012-04-13 21:54:06 1226

原创 x86从 start_kernel 开始的中断初始化

以下主要看了 linux 3.2 中,从 start_kernel() 开始的一些跟中断有关的初始化代码,并做了一点点简单的分析。start_kernel() 在 init/main.c 中,其中和中断有关的大概就有这样一些函数:/* filename: init/main.c */467 asmlinkage void __init start_kernel(void)468 {

2012-04-13 21:45:04 2493

原创 PowerPC 堆栈

PowerPC 在处理器级别上是没有实现堆栈操作的,也就是说,在 PowerPC 架构中,没有专门的堆栈操作汇编命令。但事实上 PowerPC 又使用到了堆栈,比如在函数调用、传参、返回错误码等操作。        在讲 PowerPC 堆栈处理之前,先提一下要用到的某些寄存器。首先是32个通用寄存器 GPR0 ~ GPR31。据说这32个寄存器是64位的,但是高32位的访问方式不同,通常只用

2012-03-19 13:38:05 3289

原创 Archlinux conky配置

conky 是一个轻量级的系统监视器,可以实时反映出系统的相关信息。参考: http://www.linuxidc.com/Linux/2011-02/32508.htm有图有真相代码主要和参考中的一致,只是天气那块我是自己用 python 写的,因为原来的 weather.com 已经不能用了,所以也就不需要安装 conkyforecase 这个东西。

2012-03-10 22:11:14 3430

原创 U-Boot: inflate() error 和 unable to open an initial console

最近开始做 PowerPC 上的一些东西,在编译内核,启动内核的过程中遇到了很多问题,这两天都块搞屎我了……        不过最终还是解决了,现在把我遇到的问题和解决办法贴在这里,可以供大家参考,也方便我下次遇到同样的问题时可以迅速的找到解决方案。但是需要说的是,导致同样问题的原因可能是多样的,所以我的方法不一定百分百能解决大家的问题。先说下我的环境:主机:Archlinux (

2012-02-29 21:26:28 2056

转载 在enum中的宏定义

转自:http://bbs.chinaunix.net/thread-795201-1-1.html    今天在代码里看到有一点很奇怪的代码,代码定义了一个枚举类型,但是这个枚举类型没有变量名,而且在其中包含了宏定义,宏定义也是自己定义自己enum { exit_domain_nr,#define exit_domain_nr exit_domain_n

2012-02-24 20:26:33 2192 1

翻译 initrd 和 initramfs

原文:https://www.linux.com/learn/linux-training/92607-the-kernel-newbie-corner-qinitrdq-and-qinitramfsq-whats-up-with-thatinitrd:initial ramdiskinitramfs:initial ram filesystem    这两个东西都是我们经常会用到

2012-02-11 17:03:28 2072

原创 用堆栈做队列

程序中的临时变量都是存放在进程的堆栈中的,那么要实现队列,只需要在一次函数调用中不释放函数中的局部变量,然后让一个指针始终指向队列头,另一个指针始终指向队列的第二个成员就可以了。这时,就需要被调用的函数不能退出,那么它的所有局部变量就不会被释放。为了做一个例子,我们让一个函数递归调用它自身,知道满足一定条件以后,才能把堆栈中的函数取出来继续执行。当然,在现实中,更多的情况是某些进程因为

2011-12-13 19:45:43 645

转载 Linux 内核DMA机制

DMA控制器硬件结构DMA允许外围设备和主内存之间直接传输 I/O 数据, DMA 依赖于系统。每一种体系结构DMA传输不同,编程接口也不同。数据传输可以以两种方式触发:一种软件请求数据,另一种由硬件异步传输。在第一种情况下,调用的步骤可以概括如下(以read为例):(1)在进程调用 read 时,驱动程序的方法分配一个 DMA 缓冲区,随后指示硬件传送它的数据。进程进

2011-11-29 21:44:37 2558

原创 container_of -- 巧妙的宏定义

内核中的 container_of() 宏定义container_of() 宏的功能就是通过结构体中的一个元素,来找到这个结构体的首地址。先来看看他的代码:// include/linux/kernel.h#define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member )

2011-11-29 21:04:48 693

原创 Bash - the shell (2)

1. 更改bash为vi模式       bash默认是使用emacs模式,就是说在命令行编辑命令的很多快捷键是和emacs一样的(快捷键《bash-the shell(1)》中讲过了)。但是除了emacs,另外一个神器就是vi(vim)。vi是一个遵循POSIX的文本编辑器,因此如果需要让shell具有模式兼容性的话,让bash工作在vi模式是很有必要的。使用以下命令切换bash的模式:

2011-10-29 17:01:10 922

原创 强制重启Linux

前段时间服务器出了问题,挂载iscsi的过程中貌似出了问题,+C无法终止程序,kill,pkill,killall都没有效果。实在是没办法了,想着干脆重启好了,结果reboot,没有响应……  服务器又托管在网络中心的,没办法直接关电源。后来从网上搜了两条命令,可以强制重启,在这里记录一下,以后遇到同样的问题就好解决了~# echo 1 > /proc/sys/kernel/sysrq#

2011-10-25 21:06:31 5372 1

原创 Bash - the shell (1)

1. 什么是shell?       shell是一种用户接口,我们可以通过shell来与计算机进行通信,或者说可以通过shell来操作计算机。所以任何可以操作计算机的程序应该都可以叫做shell。事实上,shell是一个循环执行的程序。它的框架可以大体表示如下:while you do not exit or logout { print a prompt read a stri

2011-10-25 20:09:47 804

原创 Linux C SQLite3 编程

SQLite3        SQLite是一个轻量级的数据库。和常用的MySQL大同小异。和MySQL相比,数据类型基本一样,只是sqlite的指令都是以"."开头(如:mysql中查看当前有哪些数据库是“show databases",而sqlite中是".databases")。当然,SQL语句都是一样的语法规则。Host System: Archlinuxgcc: 4.6.1 2

2011-10-24 21:15:24 1982

Embedded Linux Primer: A Practical, Real-World Approach

Embedded Linux Primer: A Practical, Real-World Approach 作者:Christopher Hallinan 发行时间: September 18, 2006 页数: 576

2012-10-31

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除