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じゃないとだめぽい。

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は起動に失敗する???