(linenum→info "unix/slp.c:2238")

Hirokazu Takata

Bio:A Linux/M32R project and FSIJ member
URL:http://www.linux-m32r.org
Location:lives in the Debian/GNU Linux world

2008-04-13

_ qemu/0.9.1/linux-user/main.c:1929-1929

 1929: int main(int argc, char **argv)

ユーザモードのメインルーチン。

_ qemu/0.9.1/linux-user/main.c:2066-2066

 2066:     env = cpu_init(cpu_model);

初期化。

cpu_init()はプリプロセッサマクロ。target-{ARCH}/cpu.hでマクロ定義されている。

  • #define CPUState CPU{ARCH}State
  • #define cpu_init cpu_{ARCH}_init
  • #define cpu_exec cpu_{ARCH}_exec
  • #define cpu_gen_code cpu_{ARCH}_gen_code
  • #define cpu_signal_handler cpu_{ARCH}_signal_handler

_ qemu/0.9.1/linux-user/main.c:2091-2094

 2091:     if (loader_exec(filename, argv+optind, target_environ, regs, info) != 0) {
 2092:         printf("Error loading %s\n", filename);
 2093:         _exit(1);
 2094:     }

ローダの実行。オブジェクトファイルをロード。

_ qemu/0.9.1/linux-user/main.c:2358-2358

 2358:     cpu_loop(env);

cpu_loop ... ユーザモードでの命令実行ループ。

OS環境/アーキテクチャごとに cpu_loopという関数が存在する(*-user/main.c)。

  • linux-user/main.c ... linux環境
  • darwin-user/main.c ... darwin環境