mmap /dev/zeroできない
ちょっとはまった
Linuxだと/dev/zeroから適当にmmapしてメモリ確保するけどmac os xでそれやるとこける。
かわりに-1をmmapするとよい。
#ifdef __linux__ int fd = ::open("/dev/zero", O_RDONLY); return mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); #elsif __APPLE__ return mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0); #endif
ちなみにfd -1をMAP_PRIVATEは失敗するので、MAP_SHARED | MAP_ANONじゃないとだめぽい。
GCCのデフォルト定義マクロ一覧
かってに#defineされる定数群を表示。
echo '' | gcc -dM -E - | sort
kernel packageを作る
よくわからん。oprofile用とかconfigかえた勝手パッケージを作る方法。
前にもやったけどやり方忘れたのでめも。
sudo apt-get install linux-patch-debian-2.6.32 linux-source-2.6 binutils-dev cd /usr/src tar jxvf linux-source-* # パッチ適用? 効いてるのかわからん /usr/src/kernel-patches/all/2.6.32/apply/debian make clean make mrproper cp /boot/config-2.6.32-5-amd64 .config make menuconfig # oprofile用にvmlinux(非圧縮kernel img)を残す echo "install_vmlinux=YES" >> /etc/kernel-pkg.conf make-kpkg clean CONCURRENCY_LEVEL=8 make-kpkg --append-to-version "-nyaxt" --initrd kernel_image modules_image kernel_headers dpkg -i *.deb # 再起動してgrubでvmlinuzの方を選択。vmlinuxは起動に失敗する???