hagio.org - 日記

Powered by PENS


Index

2009: 1月(1)(2) 2月(1)(2) 3月(1)(2) 4月(1)(2) 5月(1)(2) 6月(1)(2) 7月(1)(2) 8月(1)(2) 9月(1)(2) 10月(1)(2) 11月(1)(2) 12月(1)(2)
2010: 1月(1)(2) 2月(1)(2) 3月(1)(2) 4月(1)(2) 5月(1)(2) 6月(1)(2) 7月(1)(2) 8月(1)(2) 9月(1)(2) 10月(1)(2) 11月(1)(2) 12月(1)(2)
2011: 1月(1)(2) 2月(1)(2) 3月(1)(2) 4月(1)(2) 5月(1)(2) 6月(1)(2) 7月(1)(2) 8月(1)(2) 9月(1)(2) 10月(1)(2) 11月(1)(2) 12月(1)(2)
2012: 1月(1)(2) 2月(1)(2) 3月(1)(2) 4月(1)(2) 5月(1)(2) 6月(1)(2) 7月(1)(2) 8月(1)(2) 9月(1)(2) 10月(1)(2) 11月(1)(2) 12月(1)(2)
2013: 1月(1)(2) 2月(1)(2) 3月(1)(2) 4月(1)(2) 5月(1)(2) 6月(1)(2) 7月(1)(2) 8月(1)(2) 9月(1)(2) 10月(1)(2) 11月(1)(2) 12月(1)(2)
2014: 1月(1)(2) 2月(1)(2) 3月(1)(2) 4月(1)(2) 5月(1)(2) 6月(1)(2) 7月(1)(2) 8月(1)(2) 9月(1)(2) 10月(1)(2) 11月(1)(2) 12月(1)(2)
2015: 1月(1)(2) 2月(1)(2) 3月(1)(2) 4月(1)(2) 5月(1)(2) 6月(1)(2) 7月(1)(2) 8月(1)(2) 9月(1)(2) 10月(1)(2) 11月(1)(2) 12月(1)(2)
2016: 1月(1)(2) 2月(1)(2) 3月(1)(2) 4月(1)(2) 5月(1)(2) 6月(1)(2) 7月(1)(2) 8月(1)(2) 9月(1)(2) 10月(1)(2) 11月(1)(2) 12月(1)(2)
2017: 1月(1)(2) 2月(1)(2) 3月(1)(2) 4月(1)(2) 5月(1)(2) 6月(1)(2) 7月(1)(2) 8月(1)(2) 9月(1)(2) 10月(1)(2) 11月(1)(2) 12月(1)

今月のアルバム [ 投稿 | 編集 ]


編集

March 2013

Mar 28 (Thu)

23:15

言いたいだけシリーズ その 103:

「そして、はす向かいにいるのが今回のキーマンや」

Mar 27 (Wed)

22:15

RHEL の kernel-debug パッケージとは何ぞや。

どうも、以下の config の違いのようである。他にも何かあるのかもしれないが、見切れず。

# diff -u kernel-2.6.18-x86_64.config kernel-2.6.18-x86_64-debug.config --- kernel-2.6.18-x86_64.config 2010-12-20 04:09:44.000000000 +0900 +++ kernel-2.6.18-x86_64-debug.config 2010-12-20 04:09:44.000000000 +0900 @@ -3137,17 +3137,18 @@ CONFIG_PCIE_ECRC=y CONFIG_PCIEAER_INJECT=m -# CONFIG_DEBUG_SLAB is not set -# CONFIG_DEBUG_MUTEXES is not set -# CONFIG_DEBUG_RT_MUTEXES is not set -# CONFIG_DEBUG_RWSEMS is not set -# CONFIG_DEBUG_LOCK_ALLOC is not set -# CONFIG_PROVE_LOCKING is not set -# CONFIG_DEBUG_VM is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set -# CONFIG_LOCK_STAT is not set -# CONFIG_XFS_DEBUG is not set +CONFIG_DEBUG_SLAB=y +CONFIG_DEBUG_MUTEXES=y +CONFIG_DEBUG_RT_MUTEXES=y +CONFIG_DEBUG_RWSEMS=y +CONFIG_DEBUG_LOCK_ALLOC=y +CONFIG_PROVE_LOCKING=y +CONFIG_DEBUG_VM=y +CONFIG_DEBUG_SPINLOCK=y +CONFIG_DEBUG_SPINLOCK_SLEEP=y +CONFIG_LOCK_STAT=y +CONFIG_XFS_DEBUG=y +CONFIG_EDAC_DEBUG=y CONFIG_UID16=y # CONFIG_X86_64_XEN is not set # CONFIG_MK8 is not set

パッと見、/proc 配下のいくつかの情報が追加・拡張されているように見える。 /proc/slab_allocators というファイルができていたり、 /proc/slabinfo がかなり横長くなっていたりする。 この slab_allocators は結構有用な気が…。

[root@centos53-64 ~]# uname -a Linux centos53-64.hagio.org 2.6.18-348.el5debug #1 SMP Tue Jan 8 19:17:19 EST 2013 x86_64 x86_64 x86_64 GNU/Linux [root@centos53-64 ~]# head /proc/slab_allocators rpc_buffers: 8 mempool_create_node+0xc4/0xeb rpc_tasks: 8 mempool_create_node+0xc4/0xeb rpc_inode_cache: 6 rpc_alloc_inode+0x15/0x17 [sunrpc] ip_fib_alias: 10 fn_hash_insert+0x4b8/0x686 ip_fib_hash: 10 fn_hash_insert+0x4de/0x686 bio_map_info: 100 mempool_create_node+0xc4/0xeb sgpool-64: 32 mempool_create_node+0xc4/0xeb sgpool-32: 32 mempool_create_node+0xc4/0xeb sgpool-16: 32 mempool_create_node+0xc4/0xeb sgpool-8: 32 mempool_create_node+0xc4/0xeb [root@centos53-64 ~]# head /proc/slabinfo slabinfo - version: 2.1 (statistics) # name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail> : globalstat <listallocs> <maxobjs> <grown> <reaped> <error> <maxfreeable> <nodeallocs> <remotefrees> <alienoverflow> : cpustat <allochit> <allocmiss> <freehit> <freemiss> rpc_buffers 8 9 2072 3 2 : tunables 24 12 8 : slabdata 3 3 0 : globalstat 9 9 3 0 0 0 0 0 0 : cpustat 5 3 0 0 rpc_tasks 8 10 400 10 1 : tunables 32 16 8 : slabdata 1 1 0 : globalstat 10 10 1 0 0 0 0 0 0 : cpustat 7 1 0 0 rpc_inode_cache 6 6 1352 3 1 : tunables 24 12 8 : slabdata 2 2 0 : globalstat 6 6 2 0 0 0 0 0 0 : cpustat 4 2 0 0 ip_fib_alias 10 53 72 53 1 : tunables 32 16 8 : slabdata 1 1 0 : globalstat 32 25 1 0 0 0 0 0 0 : cpustat 8 2 0 0 ip_fib_hash 10 59 64 59 1 : tunables 32 16 8 : slabdata 1 1 0 : globalstat 32 25 1 0 0 0 0 0 0 : cpustat 8 2 0 0 iser_descriptors 0 0 152 25 1 : tunables 32 16 8 : slabdata 0 0 0 : globalstat 0 0 0 0 0 0 0 0 0 : cpustat 0 0 0 0 ib_mad 0 0 472 8 1 : tunables 32 16 8 : slabdata 0 0 0 : globalstat 0 0 0 0 0 0 0 0 0 : cpustat 0 0 0 0 jbd_1k 0 0 1024 4 1 : tunables 32 16 8 : slabdata 0 0 0 : globalstat 0 0 0 0 0 0 0 0 0 : cpustat 0 0 0 0

Mar 26 (Tue)

21:09

カーネルモジュールの作り方メモ:

jiffies の値を確認してみる。

[root@centos53-64 jiffies]# cat jiffies.c #include <linux/module.h> #include <linux/kernel.h> #include <linux/proc_fs.h> #define PROCFS_NAME "jiffies" MODULE_DESCRIPTION("jiffies exposure module"); MODULE_AUTHOR("hagio"); MODULE_LICENSE("GPL"); static struct proc_dir_entry *my_proc_file; int my_proc_read(char *buffer, char **buffer_location, off_t offset, int buffer_length, int *eof, void *data) { int ret; if (offset > 0) { ret = 0; } else { ret = sprintf(buffer, "%lu\n", jiffies); } return ret; } static int my_module_init(void) { printk(KERN_INFO PROCFS_NAME " my_module_init()\n"); my_proc_file = create_proc_entry(PROCFS_NAME, 0644, NULL); if (my_proc_file == NULL) { remove_proc_entry(PROCFS_NAME, &proc_root); printk(KERN_ALERT "Error: Could not initialize /proc/%s\n", PROCFS_NAME); return -ENOMEM; } my_proc_file->read_proc = my_proc_read; my_proc_file->owner = THIS_MODULE; printk(KERN_INFO "/proc/%s created\n", PROCFS_NAME); return 0; } static void my_module_exit(void) { remove_proc_entry(PROCFS_NAME, &proc_root); printk(KERN_INFO PROCFS_NAME " my_module_exit()\n"); } module_init(my_module_init); module_exit(my_module_exit); [root@centos53-64 jiffies]# cat Makefile obj-m := jiffies.o KSRC_DIR := /lib/modules/$(shell uname -r)/source BUILD_DIR := $(shell pwd) all: $(MAKE) -C $(KSRC_DIR) SUBDIRS=$(BUILD_DIR) modules clean: rm -rf *.o *.ko *.mod.c *.markers *.symvers .*.cmd .tmp_versions [root@centos53-64 jiffies]# rpm -q kernel-devel kernel-devel-2.6.18-128.el5 [root@centos53-64 jiffies]# make make -C /lib/modules/2.6.18-128.el5/source SUBDIRS=/root/jiffies modules make[1]: ディレクトリ `/usr/src/kernels/2.6.18-128.el5-x86_64' に入ります CC [M] /root/jiffies/jiffies.o Building modules, stage 2. MODPOST CC /root/jiffies/jiffies.mod.o LD [M] /root/jiffies/jiffies.ko make[1]: ディレクトリ `/usr/src/kernels/2.6.18-128.el5-x86_64' から出ます [root@centos53-64 jiffies]# ls Makefile Module.markers Module.symvers jiffies.c jiffies.ko jiffies.mod.c jiffies.mod.o jiffies.o [root@centos53-64 jiffies]# insmod jiffies.ko [root@centos53-64 jiffies]# dmesg | tail -n2 jiffies my_module_init() /proc/jiffies created [root@centos53-64 jiffies]# ls -l /proc/jiffies -rw-r--r-- 1 root root 0 3月 26 21:08 /proc/jiffies [root@centos53-64 jiffies]# cat /proc/jiffies 4295379706 [root@centos53-64 jiffies]# cat /proc/jiffies 4295389306 [root@centos53-64 jiffies]# rmmod jiffies [root@centos53-64 jiffies]# dmesg | tail -n2 /proc/jiffies created jiffies my_module_exit() [root@centos53-64 jiffies]# ls -l /proc/jiffies ls: /proc/jiffies: そのようなファイルやディレクトリはありません [root@centos53-64 jiffies]# modinfo jiffies.ko filename: jiffies.ko license: GPL author: hagio description: jiffies exposure module srcversion: 6C4B0B622452F30D9C641B5 depends: vermagic: 2.6.18-128.el5 SMP mod_unload gcc-4.1

こういうテンプレートを作っておくと、後々役に立つことがある。

20:22

気になりワードメモ:

Mar 25 (Mon)

20:52

マンガ好きを自称している以上、たまには紹介でもしないとね。

ということで、最近読んだマンガで一番面白かったのは、

ハイスコアガール』 かなあ。 30 代でゲーム好き、特にアーケード派だったら、どストライクに違いない。

と、某友人に読んでほしいだけだが紹介しとく。

ゲームは興味ないなぁ… という健全なる市民にはこちら、もう紹介するまでもない 『銀の匙』 でしょうかね。NHK あたりでアニメ化されそう… と思ってたら、 ノイタミナ で決まったらしい。ふーん、そうですか、フジですか。がんばってください。 できれば余計な脚色のない、淡々としたアニメ化を期待しています。

3 月(1) へ


↑戻る