PUBLIC Jdb_module::Action_code Jdb_rcupdate::action(int cmd, void *&, char const *&, int &) { printf("\nRCU--------------------------\n"); if (cmd == 0) { printf("RCU:\n current batch="); print_batch(Rcu::_rcu._current); puts(""); printf(" completed="); print_batch(Rcu::_rcu._completed); puts(""); printf(" next_pending=%s\n" " cpus=", Rcu::_rcu._next_pending?"yes":"no"); Jdb::cpu_mask_print(Rcu::_rcu._cpus); puts(""); printf(" active cpus="); Jdb::cpu_mask_print(Rcu::_rcu._active_cpus); puts(""); printf(" active cpus="); Jdb::cpu_mask_print(Rcu::_rcu._active_cpus); puts(""); for (Cpu_number i = Cpu_number::first(); i < Config::max_num_cpus(); ++i) { if (!Cpu::online(i)) continue; printf(" CPU[%2u]:", cxx::int_value<Cpu_number>(i)); Rcu_data const *d = &Rcu::_rcu_data.cpu(i); printf(" quiescent batch="); print_batch(d->_q_batch); puts(""); printf(" quiescent state passed: %s\n", d->_q_passed?"yes":"no"); printf(" wait for quiescent state: %s\n", d->_pending?"yes":"no"); printf(" batch="); print_batch(d->_batch); puts(""); printf(" next list: h=%p len=%ld\n", d->_n.front(), d->_len); printf(" current list: h=%p \n", d->_c.front()); printf(" done list: h=%p\n", d->_d.front()); } } return NOTHING; }
PUBLIC Jdb_module::Action_code Jdb_rcupdate::action(int cmd, void *&, char const *&, int &) { printf("\nRCU--------------------------\n"); if (cmd == 0) { printf("RCU:\n current batch="); print_batch(Rcu::_rcu._current); puts(""); printf(" completed="); print_batch(Rcu::_rcu._completed); puts(""); printf(" next_pending=%s\n" " cpus=", Rcu::_rcu._next_pending?"yes":"no"); for (unsigned i = 0; i < Config::Max_num_cpus; ++i) printf("%s%s", Rcu::_rcu._cpus.get(i)?"1":"0", i%4 == 3?" ":""); puts(""); for (unsigned i = 0; i < Config::Max_num_cpus; ++i) { if (!Cpu::online(i)) continue; printf(" CPU[%2u]:", i); Rcu_data const *d = &Rcu::_rcu_data.cpu(i); printf(" quiescent batch="); print_batch(d->_q_batch); puts(""); printf(" quiescent state passed: %s\n", d->_q_passed?"yes":"no"); printf(" wait for quiescent state: %s\n", d->_pending?"yes":"no"); printf(" batch="); print_batch(d->_batch); puts(""); printf(" next list: h=%p len=%ld\n", d->_n.front(), d->_len); printf(" current list: h=%p \n", d->_c.front()); printf(" done list: h=%p\n", d->_d.front()); } return NOTHING; } return NOTHING; }