コード例 #1
0
ファイル: paging.c プロジェクト: Enerccio/Cthulhu-OS
void deallocate_start_memory() {
	tlb_shootdown(get_active_page(), 0, 0x200000);
    memset((void*)physical_to_virtual((uintptr_t)get_active_page()), 0, 256*sizeof(uintptr_t));
    tlb_shootdown_end();
}
コード例 #2
0
ファイル: payload.c プロジェクト: RWTH-OS/smp.boot
void payload_benchmark()
{

    /*
     * count and collect all processors (collective barrier)
     */
    if (CPU_ID == 0) smm_deactivate();       // ...and (try to) deactivate SMM


    /*
     * Memory allocation
     */
    init_buffers();

    barrier(&global_barrier);

    /*
     *   Benchmarks
     */

    bench_hourglass();
    bench_hourglass_worker(p_contender);
    bench_hourglass_hyperthread();

    barrier(&global_barrier);

    bench_worker(p_buffer, p_contender);
    bench_worker_cut(p_buffer, p_contender, 16*KB);
    
    
    if (CPU_ID == 0) {
        heap_reconfig(p_buffer, buffer_size, 0);
        heap_reconfig(p_contender, contender_size, MM_CACHE_DISABLE);
        barrier(&global_barrier);
        printf("========  Benchmark: WB / Load: CD ===================================\n");
    } else {
        barrier(&global_barrier);
        tlb_shootdown(p_buffer, buffer_size);
        tlb_shootdown(p_contender, contender_size);
    }
    barrier(&global_barrier);
    

    bench_worker_cut(p_buffer, p_contender, 16*KB);
    bench_worker_cut(p_buffer, p_contender, 128*KB);

    
    if (CPU_ID == 0) {
        heap_reconfig(p_buffer, buffer_size, 0);
        heap_reconfig(p_contender, contender_size, MM_WRITE_THROUGH);
        barrier(&global_barrier);
        printf("========  Benchmark: WB / Load: WT ===================================\n");
    } else {
        barrier(&global_barrier);
        tlb_shootdown(p_buffer, buffer_size);
        tlb_shootdown(p_contender, contender_size);
    }
    barrier(&global_barrier);
    

    bench_worker_cut(p_buffer, p_contender, 16*KB);
    bench_worker_cut(p_buffer, p_contender, 128*KB);

    barrier(&global_barrier);

    bench_mem(p_buffer, p_contender);
    bench_rangestride(p_buffer);
}