Linux Kernel のソースコード(MUST)glibc のソースコード(MUST)ソースコードを快適に閲覧できるデバイス(MUST)読み書きに不自由しないだけのC言語の知識と経験(MUST)Linux カーネル 2.6 解読室(OPTIONAL)
![第(1+1)回 六本木 Linux カーネル読書会 (2012/08/01 19:30〜)](https://cdn-ak-scissors.b.st-hatena.com/image/square/b6c0ad429ed33723ad498f0e2e730cb1e85d243f/height=288;version=1;width=512/https%3A%2F%2Fmedia.connpass.com%2Fthumbs%2Fea%2Fea%2Feaea2d2d3dd74b605677f29172bd7fae.png)
32bit/64bit両対応のコードを書いていると,よく printf() で引っかかります."%d"のような"書式"がややこしいからです. というわけで,変数の"型"と"書式"の対応を,表で整理してみました. 型 書式 注意事項 ssize_t %zd size_t %zu intmax_t %jd uintmax_t %ju ptrdiff_t %t signed char %hhd unsigned char %hhu short int %hd unsigned short int %hu int %d unsigned int %u long int %ld unsigned long int %lu long long int %lld unsigned long long int %llu int32_t %PRId32 以下,#include が必要(下記参照) uint3
べっ・・・別にソースコードなんて自分でコンパイルしないんだからねッ!!などと言わずにまず聞いていただきたい。30秒でMySQLのコンパイルが出来るというこの事実を。最近、細々とビルド時間の短縮に取り組んでいたのだが、正直ここまで爆速になるとは思わなかった。今日はビルド時間短縮のためのテクニックを紹介するので、是非皆さんも参考にして、快適ビルド生活を送って頂きたい!! 自己ベストは26.262秒マシンの状態や負荷の状況によって多少ビルドにかかる時間は前後してしまうのだが、これまでの自己ベストはなんと26.262秒。平均すると30秒ぐらい。以前は1分を切ることがなかったのだが、今ではなんとその半分でビルドが出来てしまう。これは純粋にmakeをするのにかかった時間であり、cmake(MySQL 5.5以降)やconfigure(MySQL 5.1以前)にかかる時間は除いてある。だがそれでも速い。
LLVM is a robust system, particularly well suited for developing new mid-level language-independent analyses and optimizations. LLVMのC/C++コンパイラであるClangがまたひとつのマイルストーンに到達した。[cfe-dev] Clang builds a working Linux Kernel (Boots to RL5 with SMP, networking and X, self hosts)の報告によれば、LLVM Clangを使ってLinuxカーネル2.6.36/SMP版のビルドに成功したという。同カーネルを使ってXの利用とネットワークの利用も確認したと報告されている。 LLVM Clangは2010年2月にセルフホスティングに到達。OSSのC
blog@browncat.org Web, Linux, Ubuntu, Mac, PDA, 携帯電話, プログラミング, ソフトウェア&落書き Google Perftoolsはパフォーマンス測定用のプロファイラで有名ですが、その中にはTCMalloc(Thread Caching Malloc)という高速なmallocライブラリが含まれています。 google-perftools - Google Code TCMalloc : Thread-Caching Malloc TCMallocのページを見ると例として通常のmalloc 300nsに対して50nsで実行が終わるとあります。特にマルチスレッドで効果を発揮し、速度とメモリを節約するとあります。 mallocはユーザランドの根幹をなす重要なライブラリの一つなので入れ換えは恐いといえば恐いですが、それだけに効果もあることが予想され
ファイルディスクリプタは、プログラムの外部との入出力を行う抽象的なインタフェースです。Unix/Linuxのファイルディスクリプタは、一般的なファイルだけでなくデバイスやソケットやパイプも対象としています。当連載は、ファイルディスクリプタの機能や管理方法などを提示します。第1回では、ファイルディスクリプタの概要を紹介します。 はじめに ファイルディスクリプタ(Windowsではファイルハンドル)は、プロセスや実行ファイルにとって外部の資源にアクセスしたりアクセスされたりする際に使用される抽象的なインターフェースです。 今日のプログラムは必ずと言っていいほど外部とのインターフェースを持っていますが、新しいディスクリプタや効率的な使い方がそれほど明確ではなかったりします。 当連載では、ファイルディスクリプタに関する調査・試行錯誤した結果、新しいディスクリプタを使用した感想や効率的な管理方法など
3連休何をしようかと考えていたら,なんとなくデーモンプログラムを書いてみたくなったので,Cによるネットワークプログラミングを勉強することにした. 2年くらい前に文献[1]を購入し,過去に2回ほど勉強しようと思ったけれど,とにかくインクルードする必要があるヘッダーファイルが大量にある時点で嫌気が差して挫折してしまった. ソケットのイメージはわかっているつもりだけれど,実はよくわかっていなかった.なぜかわからないけれど,今日本を読みながらてしてしコードを書いていたら色々つながって基本的なことを理解することができた. デーモンを作るところまで行きたかったけれど,途中まででいったん中断.サーバプログラム,クライアントプログラムを書く手順をメモしておく. サーバプログラム socketをつくる bindする listenする acceptする いろいろ処理する クライアントプログラム socketを
一晩寝てからデーモンプロセスの作り方を眺めてとても簡単だということに気がついた.自分メモ. デーモンへの道のり fork()して子プロセス (次郎) を生成.親プロセス (太郎) を終了する 次郎プロセスでsetsid()する 次郎プロセスはセッショングループリーダになる この時点で次郎プロセスは制御端末を持たなくなる 次郎プロセスがfork()して孫プロセス (三郎) 生成.次郎プロセス終了 chdir("/")する. shutdown時のumount処理に迷惑をかけないため 標準入力,標準出力,標準エラー出力を閉じる サンプルコード 比較を行うために3つのプログラムを書いた. daemon 全部行う nondaemon 2度目のfork()をしない nondaemon2 setsid()しない #include <stdio.h> #include <stdlib.h> #includ
memccpy() で文字列をコピーする 詳解Unixプログラミングを読んでいたところ、標準入出力ライブラリの章に「この例からわかることは、行単位の関数は memccpy(3) を用いて実装されていることである」という記述がありました。 一瞬、memcpy(3) の誤植かと思いましたが、調べてみると 4.3 BSD で追加された関数ということがわかりました。 glibc に入っているので Linux でも使えます。 マニュアル によると memccpy() は次のような関数です。 書式 void *memccpy(void *dest, const void *src, int c, size_t n); 説明 memccpy() はメモリ領域src からメモリ領域dest に最大でnバイトコピーする。nバイトコピーする前に文字 c が見つかると、そこでコピーを中止する。 返り値 memc
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く