2016年6月18日 星期六

10分鐘了解CPU如何運作

2016年3月29日 星期二

SystemC stack_protect assertion!

virtual void sc_core::sc_cor_qt::stack_protect(bool): Assertion `ret == 0' failed.

當你遇到這個錯誤時, 代表可能是你的vm.max_map_count太小了.
在systemc裏的這個QuickThread裏面會用到mprotect, 主要功能是切換stack的保護開關, 但這個保護在每個process有數量上的限制. Linux Ubuntu裏的預設值/proc/sys/vm/max_map_count為66530
你可以下這個命令試看看: sudo sysctl -w vm.max_map_count=131060

vm.max_map_count在Understand Linux Kernel一書中解釋為
The map_count field of the memory descriptor contains the number of regions owned by the process.
By default, a process may own up to 65536 different memory regions; however, the system administrator may change this limit by writing in the /proc/sys/vm/max_map_count file.

2016年3月19日 星期六

Jserv AMaCC

記錄一下Jserv和學生陳建霖、梁穎睿合作開發的small C Compiler.

* 可輸出 ARM 架構的 ELF 執行檔
* 可編譯自己並輸出合法的執行檔 (self-compilation)
* 支援 C89 經典語法
* 支援動態連結函式庫,可很容易使用作業系統提供的服務
* 提供 JIT 編譯器支援,對於想理解 ARM 架構和虛擬機器設計者,不失是個參考
程式碼發布於 GitHub: https://github.com/jserv/amacc

Linux Performance Observability Tools

Linux Performance Observability Tools 這個表畫的真的讚! 來源: Linux Performance