Time of Update: 2018-12-04
在VFS的支援下,使用者態進程讀寫任何類型的檔案系統都可以使用read和write著兩個系統調用,但是在linux核心中沒有這樣的系統調用我們如何操作檔案呢?我們知道read和write在進入核心態之後,實際執行的是sys_read和sys_write,但是查看核心原始碼,發現這些操作檔案的函數都沒有匯出(使用EXPORT_SYMBOL匯出),也就是說在核心模組中是不能使用的,那如何是好? 通過查看sys_open的源碼我們發現,其主要使用了do_filp_open()函數,該函數在fs/nam
Time of Update: 2018-12-04
一. NTFS 寫問題:resolv the problem that can't write file in NTFS file system on Linux:mount -t ntfs-3g /dev/sda3 /mnt/windFATAL: Module fuse not found.NTFS signature is missing.Failed to mount '/dev/sda3': Invalid argumentThe device '/dev/sda3' doesn't
Time of Update: 2018-12-04
【轉】製作.ppm格式Linux核心啟動logo 在做的產品中,採用預設的小企鵝做logo肯定是不行的,所以一定要替換個像樣的企業logo圖片! 以前做過Linux啟動Logo,時間太久,給忘了,所以再從新研究下。 經過在網上的搜尋,和實際驗證,製作Linux啟動logo的步驟如下: 1、在Linux系統中安裝所需的包netpbm。我用的Fedora 10,剛開始安裝命令是yum install
Time of Update: 2018-12-04
原創 轉載請註明 我們知道linux的UDP是面向不需連線的,但是TCP是連線導向,所以UDP伺服器可以並發處理,但是TCP由於是連線導向,一次通訊只能和一個用戶端相連,所以要想實現並發處理,可以使用fork()建立子進程來實現,編程模式如下: 服務端:#include <stdlib.h> #include <stdio.h> #include <errno.h> #include <string.h> #include <netdb.h&
Time of Update: 2018-12-04
Linux終端提示關鍵字: linux 終端 今天才發現Linux下的終端有這麼多好用的快速鍵。 Shift+Ctrl+T:建立標籤頁 Shift+Ctrl+W:關閉標籤頁 Ctrl+PageUp:前一標籤頁 Ctrl+PageDown:後一標籤頁 Shift+Ctrl+PageUp:標籤頁左移 Shift+Ctrl+PageDown:標籤頁右移 Alt+1:切換到標籤頁1 Alt+2:切換到標籤頁2 Alt+3:切換到標籤頁3 Shift+Ctrl+N:建立視窗
Time of Update: 2018-12-04
http://fxr.watson.org/fxr/source/include/linux/fs.h?v=linux-2.4.22#L563 struct file {564 struct list_head f_list;565 struct dentry *f_dentry;566 struct vfsmount *f_vfsmnt;567 struct
Time of Update: 2018-12-04
linux chmod 命令詳解chmod命令是非常重要的,用於改變檔案或目錄的存取權限。使用者用它控制檔案或目錄的存取權限。該命令有兩種用法。一種是包含字母和操作符運算式的文字設定法;另一種是包含數位數字設定法。1. 文字設定法chmod [who] [+ | - | =] [mode] 檔案名稱? 命令中各選項的含義為:操作對象who可是下述字母中的任一個或者它們的組合:u 表示“使用者(user)”,即檔案或目錄的所有者。g
Time of Update: 2018-12-04
這篇文章算是個小白貼,高手完全可以忽視如果,你有一個程式,一個板子,一個檔案系統,一台電腦,一根串口線,卻不知道該如何著手,讓板子運行你的程式,一籌莫展,那你應該看下這篇文章現在開始教學第一步,建立tftp伺服器tftp伺服器是為了在你那隻有一個板子的裝置上,搭建好你所需要的IDE,不同的板子可以選擇的檔案系統也有很多,我現在用的是jffs2,個人感覺用起來不是很好用。在進行下面的步驟之前,你應該瞭解什麼是tftp,這個問題,你可以百度。搭建的步驟如下:圖片比文字的描述要強一千倍,看不懂的面壁這
Time of Update: 2018-12-04
Linux下應用程式開發:QT的內部進程通訊http://www.lupaworld.com/tutorial-view-aid-7177.html Qt 作為一種跨平台的基於 C++ 的 GUI 系統,能夠提供給使用者構造圖形化使用者介面的強大功能。自從 1996 年 Qt 被 Trolltech 公司發布以來,該系統成為世界上很多成功的圖形使用者應用所使用的主要系統。更為重要的是,Linux 作業系統的案頭環境系統 KDE 也是基於 Qt 構造的。目前,Qt 已經提供了對包括
Time of Update: 2018-12-04
在Linux下使用管道進行編程http://www.lupaworld.com/tutorial-view-aid-10366.html 簡介本文中,我們將學習GNU/Linux管道。管道模型雖然很老但是就算是現在它仍然是一個十分有用的處理序間通訊機制。我們將會學習什麼是半雙向管道以及有名管道。它們都提供了一個FIFO(先進先出)排隊模型來允許處理序間通訊。 管道模型一個形象化管道的描述為——一個在兩個實體之間的單向連接器。例如,讓我們來看一看下面的這個GNU/Linux命令:ls -1 |
Time of Update: 2018-12-04
在模組裡嘗試自己實現了個隊列, 在多進程(核心裡應該叫做多線程吧)操作時會出問題。也曾嘗試解決遇到的問題,但由於自己核心開發功夫上籤,最終還是失敗了 ....後來還是採取了核心的實現 kfifo(include/linux/kfifo.h), kfifo在 linux 標準核心>=2.6.10 添加, 這裡標準核心是因為 RHEL4.8 的核心版本是2.6.9(小於2.6.10)但是也有此資料結構,然後標準核心(www.kernel.org) <2.6.10
Time of Update: 2018-12-04
折騰了會 dll 覺得不爽,改玩 so 去:一. 編寫個C檔案:test.c#include<stdio.h>// file test.cint say(){ printf("Hello, Linux so\n"); return 0;}int add(int x, int y){ return x+y;}二. 編譯成動態庫 .so : ~ # gcc -shared -o test.so
Time of Update: 2018-12-04
System V or POSIX ?該使用哪個呢, 這是個問題 ...相對而言,我更傾向於後者 posix mqposix mq 的概況看這裡:man mq_overview簡單的實現代碼:#include <mqueue.h>#include <unistd.h>#include <stdio.h>#include <stdlib.h>#define MY_MQ_NAME "/my_test_mq"#define MSG_LEN
Time of Update: 2018-12-04
一. Linux 動態庫選擇順序指:1. 編譯器時用到動態庫,該從那些地方尋找,按照怎麼樣的順序尋找?2. 運行程式時需要動態庫,該從那些地方尋找,按照怎麼樣的順序尋找?二. gcc 編譯器時尋找SO順序如下:1. gcc 編譯時間參數-L指定的路徑2. 環境變數 LIBRARY_PATH3. 系統預設庫位置 /lib /usr/lib二. Linux 程式運行時尋找SO順序如下:1. gcc 編譯時間指定的執行階段程式庫路徑 -Wl,-rpath2. 環境變數
Time of Update: 2018-12-04
一個Linux pthread 小例子:#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <fcntl.h>#include <string.h>int count = 0;void* pthread_fun(void* ptr){ count++; sleep(1);
Time of Update: 2018-12-04
一. 安裝工具 automake, autoconf, 編寫來源程式:mycc.c#include <stdio.h>#include "config.h"int main(int argc, char** argv){ if(argv == 1) { printf("version: %s\n", PACKAGE_STRING); } else { printf("name : %s\n", PACKAGE);
Time of Update: 2018-12-04
一. 情景模式1. 擷取檔案的絕對路徑,這裡指由fd擷取2. 擷取進程的絕對路徑二. linux kernel 和路徑有關的2個資料結構:1. struct dentry 檔案名稱儲存在這個結構體結構體原型:struct dentry {int d_mounted;struct inode *d_inode;/* Where the name belongs to - NULL is negative */struct hlist_node d_hash;/* lookup hash
Time of Update: 2018-12-04
ARM Linux許可權記憶體控制的實現early_trap_init->modify_domain(DOMAIN_USER, DOMAIN_CLIENT);設定USER MODE的domain許可權為client(01)根據建立的page maps表設定0xc0000000開始的地址SVC模式讀寫,USR模式不能讀寫gdb dump memory的命令如下:(struct thread_info *)0xc033a000 = (struct task_struct
Time of Update: 2018-12-04
This document shows how to compile linux tools such as SDL(simple DirectMedia Layer),Zlib,etc. #Writed by pecker.hu@gmail.com#Date:2010/11/02
Time of Update: 2018-12-04
linux 堆棧expand_stack__bprm_mm_init@@@@@@@@0xbe86f000 - 0xbe871000: address 0xbe84f000int expand_downwards(struct vm_area_struct *vma, unsigned long address){int error;if(strncmp(current->comm, "hello", 5) == 0)printk("@@@@@@@@0x%08lx - 0x%08lx: