%PDF- %PDF-
Direktori : /usr/local/lib/perl5/site_perl/mach/5.32/machine/ |
Current File : //usr/local/lib/perl5/site_perl/mach/5.32/machine/counter.ph |
require '_h2ph_pre.ph'; no warnings qw(redefine misc); unless(defined(&__MACHINE_COUNTER_H__)) { eval 'sub __MACHINE_COUNTER_H__ () {1;}' unless defined(&__MACHINE_COUNTER_H__); require 'sys/pcpu.ph'; eval 'sub EARLY_COUNTER () {( &void *) &__offsetof(\'struct pcpu\', &pc_early_dummy_counter);}' unless defined(&EARLY_COUNTER); eval 'sub counter_enter () { eval q( &do {} &while (0)); }' unless defined(&counter_enter); eval 'sub counter_exit () { eval q( &do {} &while (0)); }' unless defined(&counter_exit); if(defined(&IN_SUBR_COUNTER_C)) { eval 'sub counter_u64_read_one { my($c,$cpu) = @_; eval q({ &MPASS($c != &EARLY_COUNTER); (* &zpcpu_get_cpu($c, $cpu)); }); }' unless defined(&counter_u64_read_one); eval 'sub counter_u64_fetch_inline { my($c) = @_; eval q({ &uint64_t &r; \'int\' &cpu; &r = 0; &CPU_FOREACH( &cpu) &r += &counter_u64_read_one($c, &cpu); ( &r); }); }' unless defined(&counter_u64_fetch_inline); eval 'sub counter_u64_zero_inline { my($c) = @_; eval q({ &smp_rendezvous( &smp_no_rendezvous_barrier, &counter_u64_zero_one_cpu, &smp_no_rendezvous_barrier, $c); }); }' unless defined(&counter_u64_zero_inline); } eval 'sub counter_u64_add_protected { my($c, $i) = @_; eval q( &counter_u64_add($c, $i)); }' unless defined(&counter_u64_add_protected); eval 'sub counter_u64_add { my($c,$inc) = @_; eval q({ &KASSERT( &IS_BSP() || $c != &EARLY_COUNTER, (\\"EARLY_COUNTER used on AP\\")); &zpcpu_add($c, $inc); }); }' unless defined(&counter_u64_add); } 1;