2012-01-01から1年間の記事一覧

setitimer

setitimerを用いたタイマ使用のサンプル 下記では1秒周期でシグナルが発生する。 // timer.c #include <stdio.h> #include <signal.h> #include <time.h> #include <sys/time.h> void alarm_handler(int signo); int counter = 0; int main(void) { struct itimerval delay; int ret; signal(SIGALRM</sys/time.h></time.h></signal.h></stdio.h>…

Hexダンプ

lib

Hexダンプライブラリ 指定された領域の指定された長さ分のデータを Hexダンプする。合わせASCII表示も行う。 出力先は標準出力 //----------------------------------------- void yydump(char *p, int length) { int address = (int)p; char data[17]; int …

インタフェイス情報取得 - ifconfigもどき

ソケットに対するioctlを用いてネットワークインタフェイスに関する情報を取得する。 参考資料:UNIXネットワークプログラミング16章ifconfigのソースでも同様のことをやっている。表示をなるべくifconfigに近づけた。 但し、こちらはダウンさせたインタフェ…

netfilterフック2

netfilterフックルーチンその2 以下の4箇所のフックポイントでフックしパケットの内容をmessagesに出力する。 ・PRE_ROUTING ・POST_ROUTING ・LOCAL_IN ・LOCAL_OUT あくまで解析/デバッグ用。ログ吐きすぎ。ビルドの方法などは以下参照。 http://d.hatena.…

カーネルビルド2

■ Linux Kernelビルド方法 ■ 【参考】 http://www.nina.jp/server/redhat/kernel/kernel-rebuild-2.6.html 1. カーネルソースを適当なディレクトリに展開する。 カーネルソースはhttp://www.kernel.org/からダウンロードする。2. カーネルビルド環境を初期化…

デュアルブートインストール

基本的な手順①Linuxインストール ②Windowsインストール ③Linuxインストール上記①でLinuxをインストールするのは、パーティションを切るため。 ③で再度Linuxをインストールするのは②でWindowsをインストールすると MBRが上書きされてしまうため。・FDISK /MBR…

etags

カーネルソースのルートで$ find . -name '*.[chsS]' -print | etags -とすると巨大なTAGSファイルが生成される。 (kernel3.6.6で約76MB) 後はemacs上でESC + . で検索したい文字列を入力すると その定義に飛んでくれる。

xfceインストール

インストール $ sudo yum groupinstall XFCE設定はログイン画面でセッションの中からxfceを選択する。

grubデフォルトOS設定

grubで起動するデフォルトのOSを変更するには /boot/grub2/grub.cfgの中の上から10行目付近の set default="0" の数値を変更すればよい。 0オリジンでgrubの表示に現れるOSを指し示す。 上記ファイル(grub.cfg)のmenuentryでOSの一覧の上からの順番に一致す…

netfilterフック

Linuxのnetfilterフック関数の作成ソースファイル(exp_netfilter1.c) /* * exp_netfilter1.c */ #include <linux/types.h> #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/skbuff.h> #include <linux/netfilter.h> #include <linux/netfilter_ipv4.h> #include <linux/ip.h> #include </linux/ip.h></linux/netfilter_ipv4.h></linux/netfilter.h></linux/skbuff.h></linux/init.h></linux/kernel.h></linux/module.h></linux/types.h>

Debianインストール

DebianのサイトからISOイメージをダウンロードdebian-6.0.6-amd64-DVD-1.isoVirtualBoxのVMを新規作成し、上記ISOファイルをストレージに設定。 インストール。GuestAdditionのインストールに失敗している模様。 どうやらDebianを普通にインストールするとgc…

カーネルモジュール

Linuxカーネルモジュールの作成、インストール方法 ※参考「Linuxデバイスドライバ 第3版」カーネルモジュールの作成、インストール方法 Cソース(hello.c) #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_</linux/module.h></linux/init.h>…

カーネルビルド

http://www.kernel.org/ からカーネルソースをダウンロード Latest Stable Kernelとあるもの。 ここでは3.6.6linux-3.6.6.tar.bz2このファイルを適当なところに置く。 → /usr/src/kernel/現在使用しているカーネルビルドのコンフィグファイルをコピーする。 …

仮想マシン

VM

仮想マシン(Virtual Machine) 独自に設計した仮想マシン(VM) 機械語の命令セットを定義し、そのアセンブラを flex, bisonで実装。 また仮想マシン自体はC言語で実装。 VMの状態をリアルタイムで観察できるようにXでの表示を行った。上記のようにベースのV…

基数変換

コマンドラインで10進、16進の変換を行う。 /* * radixtrans.c * * hex -> dewcimal * decimal -> hex * */ #include <stdio.h> /*----------------------------------------------------------*/ main(int argc, char *argv[]) { char str[32]; int number; while(1)</stdio.h>…

HexDump

/* * hexdump.c */ #include <stdio.h> /*----------------------------------------------------------*/ void yydump(FILE *yyin, int length) { int address = 0; int d; char data[17]; int i; data[16] = 0; /* for string terminator */ for(;;){ printf("%05X </stdio.h>…

X Windowのプログラムサンプル

X Windowのプログラムサンプル /* * X Window sample program * * To create make file using X lib, * Create Imakefile and enter below. * $ xmkmf * Then automatically Makefile is created. * * To build target with debug information, * enter belo…

ライフゲーム

以前Haskellで書いたLifeゲーム -- life.hs -- $ ghc -package HGL life.hs -o life -- ライフゲーム -- 描画のオーバヘッドがかなり大きい。 -- 描画をしなければかなり速く動作するが、描画をすると重たい。 -- HGLの使い方で何か高速化できるのか?? imp…

n-女王問題

以前Haskellで書いたn-女王問題の解法 -------------------------------------------------------- -- queen.hs -- n-女王問題 2007.04.25 -------------------------------------------------------- -- n-queen問題の回答を表示形式で列挙する。 printAns …

ルービックキューブ解法プログラム

以前書いたHaskellでルービックキューブを解くプログラム。 但しルービックキューブになっておらず、2×2×2でしかも、1つのキューブに本当は 角で3面あるが、ここでは面の概念がなく、その位置のみを扱っている。 更に、出てきた「解」が本当に正しいのか…