freebsd の小ネタ
DESCRIPTION
K*BUG 紹介のために カーネル/VM+K*BUG勉強会@関西 ごかいめ で使ったスライド http://atnd.org/events/43501TRANSCRIPT
![Page 1: FreeBSD の小ネタ](https://reader037.vdocuments.site/reader037/viewer/2022100304/555e7e6fd8b42abd468b49ed/html5/thumbnails/1.jpg)
FreeBSD 付属ツールの小ネタ
Hirohisa Yamaguchi@umq
カーネル/VM+K*BUG勉強会@関西 ごかいめ 2013/10/19
![Page 2: FreeBSD の小ネタ](https://reader037.vdocuments.site/reader037/viewer/2022100304/555e7e6fd8b42abd468b49ed/html5/thumbnails/2.jpg)
発表者について• 株式会社ラプラス・システム
•http://www.lapsys.co.jp
• 技術部
• 関西 *BSD ユーザ会 (K*BUG)
•http://www.kbug.gr.jp
![Page 3: FreeBSD の小ネタ](https://reader037.vdocuments.site/reader037/viewer/2022100304/555e7e6fd8b42abd468b49ed/html5/thumbnails/3.jpg)
関西 *BSD ユーザ会
• 主に関西で「BSDがちょっと気になる」ぐらいのゆるい括りの集まり
• 隔月ぐらいのペースで集まってる
• BSDネタ縛りは特にない
• 「人のケツは叩くが足は引っ張らない」
![Page 4: FreeBSD の小ネタ](https://reader037.vdocuments.site/reader037/viewer/2022100304/555e7e6fd8b42abd468b49ed/html5/thumbnails/4.jpg)
今日はカーネルもVMも関係ない話をします
![Page 5: FreeBSD の小ネタ](https://reader037.vdocuments.site/reader037/viewer/2022100304/555e7e6fd8b42abd468b49ed/html5/thumbnails/5.jpg)
FreeBSD
• BSD の派生
•今年で20年らしい
![Page 6: FreeBSD の小ネタ](https://reader037.vdocuments.site/reader037/viewer/2022100304/555e7e6fd8b42abd468b49ed/html5/thumbnails/6.jpg)
発端
• 「FreeBSD のネットワークスタックを組み込み用途に移植してて、設定もそのままコマンド類を使いたいんだけど…」
• http://lists.freebsd.org/pipermail/freebsd-hackers/2013-October/043553.html
![Page 7: FreeBSD の小ネタ](https://reader037.vdocuments.site/reader037/viewer/2022100304/555e7e6fd8b42abd468b49ed/html5/thumbnails/7.jpg)
発端
• 「FreeBSD のネットワークスタックを組み込み用途に移植してて、設定もそのままコマンド類を使いたいんだけど…」
• http://lists.freebsd.org/pipermail/freebsd-hackers/2013-October/043553.html
![Page 8: FreeBSD の小ネタ](https://reader037.vdocuments.site/reader037/viewer/2022100304/555e7e6fd8b42abd468b49ed/html5/thumbnails/8.jpg)
static const char *const argv[] = { "ifconfig", "lo0", "127.0.0.1"};ifconfig(3, &argv[0]);
みたいに
![Page 9: FreeBSD の小ネタ](https://reader037.vdocuments.site/reader037/viewer/2022100304/555e7e6fd8b42abd468b49ed/html5/thumbnails/9.jpg)
problem
• static だと、グローバル変数周りで色々問題がある
• 同時実行できない
• 呼び出しの度に初期化がいるよね
![Page 10: FreeBSD の小ネタ](https://reader037.vdocuments.site/reader037/viewer/2022100304/555e7e6fd8b42abd468b49ed/html5/thumbnails/10.jpg)
patch
• グローバル変数をstaticなコンテクスト構造体に移動
• グローバル定数はconst宣言する
• 関数、変数は可能な限りstaticにする
• https://gist.github.com/anonymous/f403849622ee51da4645
![Page 11: FreeBSD の小ネタ](https://reader037.vdocuments.site/reader037/viewer/2022100304/555e7e6fd8b42abd468b49ed/html5/thumbnails/11.jpg)
残る課題
• メモリの開放ちゃんとできてない
• exit(2)そのまま呼んでたらあかんのんやない?
• getopt(3)みたいに同様の問題抱えたものをなんとかする
![Page 12: FreeBSD の小ネタ](https://reader037.vdocuments.site/reader037/viewer/2022100304/555e7e6fd8b42abd468b49ed/html5/thumbnails/12.jpg)
てか、ライブラリに括り出しちゃえばいいんじゃねぇの?
![Page 13: FreeBSD の小ネタ](https://reader037.vdocuments.site/reader037/viewer/2022100304/555e7e6fd8b42abd468b49ed/html5/thumbnails/13.jpg)
まとめ
• FreeBSD の紹介をしました
• K*BUG ヨロシク