私はこれらの2つの機能を持っています
void set_dram_channel_width(int channel_width){
printf("one\n");
getchar();
}
void set_dram_transaction_granularity(int cacheline_size){
printf("two\n");
getchar();
}
//output:
one
f //my keyboard input
two
one
f //keyboard input
two
one
f //keyboard input
//No more calls
次に、関数を次のように変更します。
void set_dram_channel_width(int channel_width){
printf("one\n");
}
void set_dram_transaction_granularity(int cacheline_size){
printf("two\n");
getchar();
}
//output
one
two
f //keyboard input
//No more calls
どちらの関数も外部コードによって呼び出されます。両方のプログラムのコードは同じですが、getchar() を変更するだけで、2 つの異なる出力が得られます。これは可能ですか、それとも私のコードに何か問題がありますか?
ありがとう
これは私がGDBで得た出力です**
最初のコードの場合
(gdb) break mem-dram.c:374
Breakpoint 1 at 0x71c810: file build/ALPHA_FS/mem/dramsim/mem-dram.c, line 374.
(gdb) break mem-dram.c:381
Breakpoint 2 at 0x71c7b0: file build/ALPHA_FS/mem/dramsim/mem-dram.c, line 381.
(gdb) run -d ./tmp/MyBench2/
one
f
[Switching to Thread 47368811512112 (LWP 17507)]
Breakpoint 1, set_dram_channel_width (channel_width=64)
(gdb) c
Continuing.
two
one
f
Breakpoint 2, set_dram_transaction_granularity (cacheline_size=64)
(gdb) c
Continuing.
Breakpoint 1, set_dram_channel_width (channel_width=8)
374 void set_dram_channel_width(int channel_width){
(gdb) c
Continuing.
two
one
f
2 番目のコードの場合
(gdb) break mem-dram.c:374
Breakpoint 1 at 0x71c7b6: file build/ALPHA_FS/mem/dramsim/mem-dram.c, line 374.
(gdb) break mem-dram.c:380
Breakpoint 2 at 0x71c7f0: file build/ALPHA_FS/mem/dramsim/mem-dram.c, line 380.
(gdb) run
one
two
f
[Switching to Thread 46985688772912 (LWP 17801)]
Breakpoint 1, set_dram_channel_width (channel_width=64)
(gdb) c
Continuing.
Breakpoint 2, set_dram_transaction_granularity (cacheline_size=64)
(gdb) c
Continuing.
Breakpoint 1, set_dram_channel_width (channel_width=8)
(gdb) c
Continuing.