原创 LINUX_VERSION_CODE與KERNEL_VERSION
由於Linux版本的在不斷更新,當設備驅動去兼容不同版本的內核時,需要知道當前使用的內核源碼版本,以此來調用對應版本的內核API,這兩個宏定義在文件 /usr/include/linux/version.h #define LI
原创 網絡設備模塊初始化(net/core/dev.c/net_dev_init)
/* * Initialize the DEV module. At boot time this walks the device list and * unhooks any devices that fail to
原创 Python調用shell命令常用方法
Python調用shell指令 方法一、使用os模塊的system方法: os.system(cmd),其返回值是shell指令運行後返回的狀態碼,int類型,0表示shell指令成功執行,256表示未找到,該方法適用於shell
原创 makefile知識點記錄
makefile關鍵字使用: 以下代碼保存爲Makefile後,執行make即可看到各關鍵字意義。 # Target::test # .PHONY: test test: @echo ${CURDIR} @echo ${M
原创 ssh(或sftp)連接慢問題解決
問題1:ssh連接很慢 解決方案: 這是應爲linux系統默認開啓DNS認證,我們關掉即可。 vim /etc/ssh/sshd_config UseDNS yes 改爲no(122行左右); GSSAPIAuthen
原创 gdb編程打印全局變量
以某個全局數組爲例說明如何gdb編程打印所有變量: 寫變量遍歷代碼 創建search.gdb文件寫如下內容: define print_hash_table set $cnt =1 set $use=2 while $cnt
原创 python調用c庫之ctypes及callback相關問題解決
Python調用c庫學習 Python模塊ctypes是Python內建的用於調用動態鏈接庫函數的功能模塊,一定程度上可以用於Python與其他語言的混合編程。由於編寫動態鏈接庫,使用C/C++是最常見的方式,故ctypes最常用於P
原创 鏈路帶寬測試工具iperf使用
下載安裝iperf https://iperf.fr/iperf-download.php 下載安裝對應版本,不區分服務端和客戶端; 運行 udp模式測試:(tcp模式去掉-u參數即可) 服務端執行: iperf -p 8000
原创 問題排查積累
1、查看進程啓動時間 ps -eo pid,lstart,etime | grep pid (lstart爲啓動時間,etime爲運行多長時間) 2、查看進程內存分佈 pmap -x pid 3、已安裝so庫及版本查看 ldcon
原创 網絡常用python函數
字符串mac地址轉換: def str2mac(s): return ("%02x:" * 6)[:-1] % tuple(orb(x) for x in s) mac地址轉字符串: def mac2str(mac):
原创 tcmalloc編譯使用
一、編譯 https://github.com/gperftools/gperftools/releases 如上鍊接頁面下載需要版本的代碼; cd /home/code/; tar -zxvf gperftools-2.7.90
原创 gdb報錯(A program is being debugged already)
用 gdb attach pid 的方式將gdb掛到一個正在運行的進程上,有時會提示 A program is being debugged already. Kill it? (y or n) 可能是由於正在執行的進程對應的b
原创 linux malloc內存申請相關參數設置
情況一、malloc小於128k的內存 malloc小於128k的內存時使用brk分配內存,將_edata往高地址推(只分配虛擬空間,不對應物理內存(因此沒有初始化),第一次讀/寫數據時,引起內核缺頁中斷,內核才分配對應的物理內存
原创 __typeof__(type)的用法(gcc擴展)
__typeof__(struct s *) xxx; 等同於: struct s * xxx; 下面的例子可以證明: #include <stdio.h> #include <stdlib.h> struct
原创 Linux top命令的用法詳細詳解
首先介紹top中一些字段的含義: VIRT:virtual memory usage 虛擬內存 1、進程“需要的”虛擬內存大小,包括進程使用的庫、代碼、數據等 2、假如進程申請100m的內存,但實際只使用了10m,那麼它會增長10