huenlil 發表在 痞客邦 留言(0) 人氣()

來源:http://loda.hala01.com/2009/04/linux上的核心訊息紀錄機制解析/

Linux上的核心訊息紀錄機制解析

一,前言

 

                     在linux的環境裡,系統訊息紀錄機制一直都是系統核心程式開發人員相當重要的參考資訊,瞭解核心訊息傳遞的機制也就成為要在Linux撰寫核心程式碼時,所需要去面對的課題,透過這篇文章筆者將為各位介紹Linux核心的訊息傳遞函式,並介紹一些簡單的方法,讓程式開發者可以更容易的控制核心訊息的導出.

 

                     這次的文章主要會使用到兩個Linux上的套件,分別為sysklogd-1.4.1.tar.gz與util-linux-2.11r.tar.gz,各位可以根據自己的需求下載不同的套件版本.

huenlil 發表在 痞客邦 留言(0) 人氣()

來源: http://freepine.blogspot.com/2010/02/analyze-memory-leak-of-android-native.html

Android libc_debug.so has a built-in function to dump all heap allocations with its backtrace, which is very useful to debug memory leaks of native processes. Below are the steps summarized during my investigation of mediaserver process:

  1. apply the patch in ./frameworks/base, which registers a memory dumper service in mediaserver process, then rebuild
  2. flash new system.img, replace libc.so with libc_debug.so, then reboot
    • $ adb remount
    • $ adb shell mv /system/lib/libc_debug.so /system/lib/libc.so
    • $ adb reboot
  3. run memorydumper to get the initial heap allocations of mediaserver process

huenlil 發表在 痞客邦 留言(0) 人氣()

來源: http://sites.google.com/site/rgbbones2/yaffs

1 Yaffs文件系統結構

1.1 簡介

1.1.1 應用場合

        Yaffs(Yet Another Flash File System)文件系統是專門針對NAND閃存設計的嵌入式文件系統,目前有YAFFS和YAFFS2兩個版本,兩個版本的主要區別之一在於YAFFS2能夠更好的支持大容量的NAND FLASH芯片。
Yaffs文件系統有些類似於JFFS/JFFS2文件系統,與之不同的是JFFS1/2文件系統最初是針對NOR FLASH的應用場合設計的,而NOR FLASH和NAND FLASH本質上有較大的區別,所以儘管JFFS1/2 文件系統也能應用於NAND FLASH,但由於它在內存佔用和啟動時間方面針對NOR的特性做了一些取捨,所以對NAND來說通常並不是最優的方案。

1.1.2 NOR和NAND的比較

        基本上NOR比較適合存儲程序代碼,其容量一般較小(比如小於32MB),價格較高,而NAND容量可達1GB以上,價格也相對便宜,適合存儲數據。一般來說,128MB以下容量NAND FLASH 芯片的一頁大小為528字節,用來存放數據,另外每一頁還有16字節的備用空間(SpareData,OOB),用來存儲ECC校驗/壞塊標誌等信息,再由若干頁組成一個塊,通常一塊為32頁16K。

huenlil 發表在 痞客邦 留言(0) 人氣()

man-page

可直接使用 man 指令去查 api/sys call,在ubuntu 下可先安裝下列兩個pkg:

$ sudo apt-get install manpages-dev

$ sudo apt-get install glibc-doc

 

huenlil 發表在 痞客邦 留言(0) 人氣()

來源: http://www.linuxuser.com.tw/skill_detail.php?cid=1399

利用capability特徵加強Linux系統安全


摘要

huenlil 發表在 痞客邦 留言(0) 人氣()

來源: http://www.prudentman.idv.tw/2007/11/big-endianlittle-endian.html

endian指的是當物理上的最小單元比邏輯上的最小單元小時,邏輯單元對映到物理單元的排布關係。

huenlil 發表在 痞客邦 留言(0) 人氣()

來源: http://hi.baidu.com/speaksoftlylove/blog/item/a580b2512440fb8b8d543079.html

GNU C的一大特色(卻不被初學者所知)就是__attribute__機制。__attribute__可以設置函數屬性(Function Attribute)、變量屬性(Variable Attribute)和類型屬性(Type Attribute)


__attribute__書寫特徵是:__attribute__前後都有兩個下劃線,並切後面會緊跟一對原括弧,括弧裡面是相應的__attribute__參數。


__attribute__語法格式為:

__attribute__ ((attribute-list))

huenlil 發表在 痞客邦 留言(0) 人氣()

來源: http://3dgo.net/2010/01/26/nexus-one-adb-on-ubuntu-9-10/

$vim /etc/udev/rules.d/90-android.rules

 

huenlil 發表在 痞客邦 留言(0) 人氣()

Android內核是基於Linux 2.6內核的(目前最新開發版本是2.6.31),它是一個增強內核版本,除了修改部分Bug外,它提供了用於支持Android平台的設備驅動,其核心驅動主要包括:


Android Binder,基於OpenBinder框架的一個驅動,用於提供Android平台的process間通訊(IPC,inter-process communication)。
    源代碼位於drivers/staging/android/binder.c


Android電源管理(PM),一個基於標準Linux電源管理系統的輕量級的Android電源管理驅動,針對嵌入式設備做了很多最佳化。
    源代碼位於kernel/power/earlysuspend.c
                        kernel/power/consoleearlysuspend.c
                        kernel/power/fbearlysuspend.c
                        kernel/power/wakelock.c
                        kernel/power/userwakelock.c


低記憶體管理器(Low Memory Killer),相對於Linux標準OOM(Out Of Memory)機制更加靈活,它可以根據需要殺死process來釋放需要的記憶體。
    源代碼位於drivers/staging/android/lowmemorykiller.c


匿名共享記憶體(ashmem),為process間提供大塊共享記憶體,同時為內核提供回收和管理這個記憶體的機制。
    源代碼位於mm/ashmem.c


Android PMEM(Physical),PMEM用於向用戶空間提供連續的物理記憶體區域,DSP和某些設備只能工作在連續的物理記憶體上。
    源代碼位於drivers/misc/pmem.c

Android Logger,一個輕量級的日誌設備,用於抓取Android系統的各種日誌。
    源代碼位於drivers/staging/android/logger.c


Android Alarm,提供了一個定時器用於把設備從睡眠狀態喚醒,同時它也提供了一個即使在設備睡眠時也會運行的時鐘基準,
    源代碼位於drivers/rtc/alarm.c

USB Gadget驅動,一個基於標準Linux USB gadget驅動框架的設備驅動,Android的USB驅動是基於gaeget框架的,
    源代碼位於drivers/usb/gadget/


Android Ram Console,為了提供調試功能,Android允許將調試日誌信息寫入一個被稱為RAM Console的設備裡,它是一個基於RAM的Buffer。
    源代碼位於drivers/staging/android/ram_console.c。

Android timed device,提供了對設備進行定時控制功能,目前支持vibrator和LED設備。
    源代碼位於drivers/staging/android/timed_output.c(timed_gpio.c)。

Yaffs2檔案系統,Android採用Yaffs2作為MTD nand flash檔案系統,源代碼位於fs/yaffs2/目錄下。Yaffs2是一個快速穩定的應用於NAND和NOR Flash的跨平台的嵌入式設備檔案系統,同其他Flash檔案系統相比,Yaffs2使用更小的記憶體來保存他的運行狀態,因此它佔用記憶體小;Yaffs2的垃圾回收非常簡單而且快速,因此能達到更好的性能;Yaffs2在大容量的NAND Flash上性能表現尤為明顯,非常適合大容量的Flash存儲。


Android內核添加或修改的文件很多,下面的列表描述了Android Emulator內核的文件:

drivers/misc/kernel_debugger.c
drivers/misc/pmem.c
drivers/misc/qemutrace/qemu_trace_sysfs.c
drivers/misc/qemutrace/qemu_trace.c
drivers/misc/qemutrace/qemu_trace.h
drivers/misc/uid_stat.c
drivers/staging/android/lowmemorykiller.c
drivers/staging/android/logger.c
drivers/staging/android/timed_output.h
drivers/staging/android/ram_console.c
drivers/staging/android/timed_gpio.c
drivers/staging/android/logger.h
drivers/staging/android/binder.h
drivers/staging/android/binder.c
drivers/staging/android/timed_output.c
drivers/staging/android/timed_gpio.h
drivers/rtc/alarm.c
drivers/rtc/rtc-goldfish.c
drivers/net/pppolac.c
drivers/net/ppp_mppe.c
drivers/net/pppopns.c
drivers/video/goldfishfb.c
drivers/switch/switch_class.c
drivers/switch/switch_gpio.c
drivers/char/dcc_tty.c
drivers/char/goldfish_tty.c
drivers/watchdog/i6300esb.c
drivers/input/misc/gpio_event.c
drivers/input/misc/gpio_input.c
drivers/input/misc/gpio_output.c
drivers/input/misc/keychord.c
drivers/input/misc/gpio_axis.c
drivers/input/misc/gpio_matrix.c
drivers/input/keyreset.c
drivers/input/keyboard/goldfish_events.c
drivers/input/touchscreen/synaptics_i2c_rmi.c
drivers/usb/gadget/android.c
drivers/usb/gadget/f_adb.h
drivers/usb/gadget/f_mass_storage.h
drivers/usb/gadget/f_adb.c
drivers/usb/gadget/f_mass_storage.c
drivers/mmc/host/goldfish.c
drivers/power/goldfish_battery.c
drivers/leds/ledtrig-sleep.c
drivers/mtd/devices/goldfish_nand_reg.h
drivers/mtd/devices/goldfish_nand.c
kernel/power/earlysuspend.c
kernel/power/consoleearlysuspend.c
kernel/power/fbearlysuspend.c
kernel/power/wakelock.c
kernel/power/userwakelock.c
kernel/cpuset.c
kernel/cgroup_debug.c
kernel/cgroup.c
mm/ashmem.c
include/linux/ashmem.h
include/linux/switch.h
include/linux/keychord.h
include/linux/earlysuspend.h
include/linux/android_aid.h
include/linux/uid_stat.h
include/linux/if_pppolac.h
include/linux/usb/android.h
include/linux/wifi_tiwlan.h
include/linux/android_alarm.h
include/linux/keyreset.h
include/linux/synaptics_i2c_rmi.h
include/linux/android_pmem.h
include/linux/kernel_debugger.h
include/linux/gpio_event.h
include/linux/wakelock.h
include/linux/if_pppopns.h
net/ipv4/sysfs_net_ipv4.c
net/ipv4/af_inet.c
net/ipv6/af_inet6.c
net/bluetooth/af_bluetooth.c
security/commoncap.c
fs/proc/base.c

huenlil 發表在 痞客邦 留言(1) 人氣()