原创 如何 make menuconfig 和 make xconfig

在ubuntu系統中,要編譯內核,還需要安裝一系列相應的工具纔行。這篇文章,正是針對這一過程的一次記錄,目標是可以通過 make menuconfig 或 make xconfig 配置內核參數----------------------

原创 linux內核內存分配

1 kmalloc和 vmalloc   都是以字節爲單位分配內存   kmalloc分配的內存都是位於3GB~high memory之間,這段內核空間與物理內存一一映射,即差爲一固定值,vmalloc  分配的內存空間在VMALLOC_

原创 網絡設備模板

網絡設備與媒介層 /* 寄存器定義 */ #define DATA_REG 0x0004 #define CMD_REG 0x0008 /* 寄存器讀寫函數*/ static u16 xxx_readword(u32 base_a

原创 設備驅動的ioctl函數

驅動程序中除了需要具備讀寫的能力外,還需具備對硬件的控制能力。 在用戶空間使用ioctl來控制設備,其原型如下 int ioctl(int fd,usnigned long cmd...) ioctl 驅動實現方法 int (*ioctl

原创 V + = e不等價於 v = v + e

計算v + = e只會求一次v的值,而計算 v = v + e則會求兩次v的值。在後一種情況下,對v的求職可能的副作用會出現兩次。在下面的例子中,i值自增一次。 a[i++] += 2; a[i++] = a[i++] +2 i的值在別處

原创 linux字符設備註冊

頭文件: #include <linux/module.h> #include <linux/types.h> #include <linux/fs.h> #include <linux/errno.h> #include <linux

原创 typedef的使用

一般書籍上關於type得分的描述,都不怎麼全面,僅知道typedef是爲變量命名別名。於是,下面的一些命名也是便於理解的。 typedef int my_int; my_int iint; // 定義一個int型變量 typede

原创 內存管理

一動態內存分配包含在<stdlib.h> malloc所分配的是一塊連續的內存,以字節爲單位, 並且不帶任何的類型信息 free用於將動態內存歸還系統 void* malloc(size_t size); void free(void*

原创 linux內核鏈表操作

與linux鏈表有關的操作定義在linux/list.h鏈表頭:struct list_head { struct list_head *next, *prev; };該結構體爲鏈接結構中的成員,這樣將鏈表的指針域與鏈表的數據域分開

原创 __builtin_constant_p()

Gcc的內建函數 __builtin_constant_p 用於判斷一個值是否爲編譯時常數,如果參數EXP 的值是常數,函數返回 1,否則返回 0。例如: ++++ include/asm-i386/bitops.h 249: #d

原创 C語言中的typeof關鍵字

原文地址 http://bbs.chinaunix.net/thread-3595195-1-1.html 另一種引用一個表達式類型的方法就是使用typeof,使用這個關鍵字的語法看上去有點像使用sizeof,但從本質上講,它更像是使用

原创 幾個越界的問題

#include <stdio.h> #include <stdlib.h> int main() { char a[1000]; int i; for(i=0; i<1000; i++) { a[i] = -1-i;

原创 野指針

以前不小心,用到野指針也只不過會讓程序賁快,或者別的什麼的,今天真不容易呀,盡然有了野指針prinft(const char ,[arg])的功能都失常了,該函數盡然不接受參數爲變量了!找了n久才發現竟然是他的問題,簡直可惡!

原创 linux內核返回錯誤參數

一直都想找一份linux內核返回錯誤參數的文檔,但是太笨了,都沒想起來去內核代碼中看看,丟人啊!#ifndef _ASM_GENERIC_ERRNO

原创 ubuntu設置爲靜態ip無法上網

爲與開發板連接的便利,將ubuntu的ip設置爲靜態,主要是DNS設置的問題,解決辦法有一下兩個: 1sudo vim /etc/network/interfaces  配置靜態ip auto eth0 iface eth0 inet