原创 ACCESS_ONCE(x)宏含義

如果你看過 Linux 內核中的 RCU 的實現,你應該注意到了這個叫做 ACCESS_ONCE() 宏,但是並沒有很多人真正理解它的含義。網上有的地方甚至對此有錯誤的解釋,所以特寫此文來澄清一下。 雖然我早在讀 perfbook 之

原创 VS Code + gdbserver 嵌入式arm遠程調試

0. 背景 海思sdk編譯出文件系統中的gdb不支持回刪,非常難用。想用一個比較靠譜且方便的調試方式,找了一些資料,發現vscode + gdbserver是不錯的選擇。使用這種方式,可以暫停程序運行,直接在代碼上打斷點,直觀的看

原创 C語言:標記化結構初始化語法

轉載自http://www.cnblogs.com/omenglvrong1/p/4363821.html       以前在看Linux代碼時,就對它的結構體初始化寫法感到奇怪,所有的初始化代碼都寫清了變量名,並且變量名前面還有一個詭

原创 Redis:ae事件模型

1.Redis的事件模型庫 大家到網上Google“Redis libevent”就可以搜到Redis爲什麼沒有選擇libevent以及libev爲其事件模型庫,而是自己寫了一個事件模型。 從代碼中可以看到它主要支持了epoll、sele

原创 線程的分離狀態

其實在寫上一篇日誌的時候,由於我把創建線程的返回值的判斷條件寫錯了,程序每次運行的時候都是顯示創建線程失敗,我就百度了一下,有人說是桟資源不足引起的,要調用一個pthread_attr_setdetachstate()函數,當時不明白爲什

原创 簡單12步理解Python裝飾器

       好吧,我標題黨了。作爲 Python 教師,我發現理解裝飾器是學生們從接觸後就一直糾結的問題。那是因爲裝飾器確實難以理解!想弄明白裝飾器,需要理解一些函數式編程概念,並且要對Python中函數定義和函數調用語法中的特性有

原创 openwrt uci api續: 找出匿名節點的"名字"

在使用uci api函數進行配置文件管理的時候,有些配置文件裏面會有匿名節點的存在。現有的uci api沒有直接支持修改匿名節點的api,所以想要修改匿名節點就略顯頭疼,甚至無從下手。其實匿名節點並非真的匿名,它也有名字存在。以下以/et

原创 openwrt uci api: 配置文件匿名節點的操作(2)

上一篇文章裏面大概說了一下怎麼找到匿名節點的"名字",這一篇說一下怎麼操作匿名節點(增,刪,改),例子如下: /* *在配置文件中新增一個節點 *(在wireless文件中新增一個ssid節點) */ int add_new_sec

原创 openWrt uci API

UCI是Unified Configuration Interface的縮寫,翻譯成中文就是統一配置接口,用途就是爲OpenWrt提供一個集中控制的接口。OpenWrt實現的這個工具,能夠讓你的不管是Lua還是PHP程序,或者SHELL程

原创 python入門神書:500 lines or less

這是一本還沒有出版的python入門神書,分成十幾個章節,每個章節都是由一位開源大牛自己編寫。目前網絡上已經提供了review版本。鏈接如下: http://aosabook.org/blog/     這本書的內容就跟標題一

原创 pthread_mutex_timedlock()

         當程序試圖獲取一個已加鎖的互斥量時,pthread_mutex_timedlock互斥量原語允許綁定線程阻塞時間。pthread_mutex_timedlock函數與pthread_mutex_lock函數是基本等價的,

原创 Warning: unknown mime-type for "xxx" -- using "application/octet-stream"

python的第一條報錯 Warning: unknown mime-type for "xxx" -- using "application/octet-stream" 這是因爲在腳本文件開始的第一行不是由 #!/usr/bin/pyt

原创 openwrt查看flash、RAM、CPU信息

1.查看Flash容量大小(存儲空間,可以理解爲電腦的硬盤) root@OpenWrt:/# dmesg |grep spi |grep Kbytes  #查看Flash容量 [    0.660000] m25p80 spi0.0:

原创 Makefile:內嵌函數用法

一、文本處理函數以下是GNU make內嵌的文本(字符串)處理函數。1       $(subst FROM,TO,TEXT)函數名稱:字符串替換函數—subst。函數功能:把字串“TEXT”中的“FROM”字符替換爲“TO”。返回值:替

原创 Linux C:文件鎖flock

1. 場景概述     在多線程開發中,互斥鎖可以用於對臨界資源的保護,防止數據的不一致,這是最爲普遍的使用方法。那在多進程中如何處理文件之間的同步呢?我們看看下面的圖: 圖中所示的是兩個進程在無同步的情況下同時更新同一個文件的過程,