2014-10-01から1ヶ月間の記事一覧

Linux 3.18のrc版でiptablesが起動できなかったという話

Linux 3.18のrc(自分が気付いたのは3.18-rc2)でiptablesが動かないからkvm環境等々が動かせなくて悩んでたんだけど、とりあえずはpatchを見つけたので解決。 パッチは(nf_reject_ipv4: module license 'unspecified' taints kernel - Patchwork)です。 i…

Linux SystemV IPC: semctl()の実装を読む

semctl()を読むのは良いけどフラグによって操作が違うのでshmctl()の時と同じくIPC_RMIDの場合を読みます。 まずはsemctl()からでshmctl()と同じくIPC_SETとIPC_RMIDは同じ関数が使われます。 1569 SYSCALL_DEFINE4(semctl, int, semid, int, semnum, int, c…

Linux SystemV IPC: semop()の実装を読む

今日はsemop()の実装を。システムコール的にはsemop(2)とsemtimedop(2)の2つの関数がありますが、カーネルのsemop()側はsemtimedop(semid, sops, nsops, NULL);と呼び出してるだけなので、実体は一つです。 では、semop(2)とsemtimedop(2)の共通実装部分、と…

Linux SystemV IPC: semgetを読む

semget()は以前のエントリ(Linuxカーネル:SystemV IPC get系操作の共通実装部分を読む - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ)で書いたようにSystemV IPC共通部分と機能固有部分に分かれていて、semget()の場合はnewary()が使われます。 というわけ…

Linux SystemV IPC: shmctl()でIPC_RMIDの処理

shmctl()はセグメントの削除だけ見ておけば良いかなというところで。 shmctl()はipc()よりsys_shmctl()の呼び出しという形で呼ばれます。 そして、shmctl()の第二引数にあたるcmdの値を使ったswitchがあり、IPC_RMIDとIPC_SETの場合はshmctl_down()が呼ばれ…

Linux SystemV IPC: shmatとshmdtを読む

今日はshmat()とshmdt()を読んでみます。 shmat()はshmget()、shmdt()、shmctl()と違ってsyscall_defineは使われていなくて、ipc()からdo_shmat()を呼び出しています。 では、do_shmat()を見ていきます。 最初は変数定義が並んでいるだけなので飛ばします。 …

Linux SystemV IPC: shmgetの実装を読む

今日はipc/shm.cにあるshmget()の実装部分であるnewseg()を読んでみる。昨日の「 Linuxカーネル:SystemV IPC get系操作の共通実装部分を読む - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ」でも書いた通りSystemV IPCのxxxget()はipcget()という共通関数を…

Linuxカーネル:SystemV IPC get系操作の共通実装部分を読む

LinuxカーネルのSystemV IPC実装で共有メモリ、セマフォ、メッセージキューのget操作はある程度共通化されているのでその辺を読んでみます。 と、その前にまずはglibc側をちょっと見てます。glibcの中でLinuxのシステムコールはsysdeps/unix/sysv/linux/にあ…

systemdの各種コマンドメモ

systemd関連のコマンドで面白そうなものを適当に。 systemd-cat(1) systemd-catはコマンドの出力結果をjournalに書き込んでくれる。 例えば↓を実行してからjournalctlでログを見ると、 masami@saga:~$ systemd-cat ls -la /usr/bin/gcc このように出力される…

φ(..)メモメモ ncproc(1)はどうやってcpu数を数えているのか

Linux環境においてcpu数(core数)を数えたいときにgrep processor /proc/cpuinfo | wc -lとやっても良いんですけど、もうちょっとスマートなやり方は無いかな?と思ってたらnproc(1)があったのでそれがどうやって数を調べているのかソースを読んでみました…