cma
fmd_conf_mode_set(const fmd_conf_mode_t *cma,
for (cmp = cma; cmp->cm_name != NULL; cmp++) {
extern cma_t cma;
if ((! repair && ! cma.cma_cpu_dooffline) ||
(repair && ! cma.cma_cpu_doonline)) {
for (i = 0; i < cma.cma_cpu_tries; i++) {
(void) nanosleep(&cma.cma_cpu_delay,
if ((! repair && ! cma.cma_cpu_doblacklist) ||
(repair && ! cma.cma_cpu_dounblacklist)) {
if (cma.cma_cpu_doonline) {
if (cma.cma_cpu_dounblacklist) {
if (cma.cma_cpu_dooffline) {
if (cma.cma_cpu_forcedoffline)
if (cma.cma_cpu_doblacklist) {
for (i = 0; i < cma.cma_cpu_tries;
i++, (void) nanosleep(&cma.cma_cpu_delay, NULL)) {
cma_t cma;
if (id == cma.cma_page_timerid)
else if (id == cma.cma_cpu_timerid)
cma.cma_cpu_tries = fmd_prop_get_int32(hdl, "cpu_tries");
cma.cma_cpu_delay.tv_sec = nsec / NANOSEC;
cma.cma_cpu_delay.tv_nsec = nsec % NANOSEC;
cma.cma_page_mindelay = fmd_prop_get_int64(hdl, "page_ret_mindelay");
cma.cma_page_maxdelay = fmd_prop_get_int64(hdl, "page_ret_maxdelay");
cma.cma_cpu_mindelay = fmd_prop_get_int64(hdl, "cpu_ret_mindelay");
cma.cma_cpu_maxdelay = fmd_prop_get_int64(hdl, "cpu_ret_maxdelay");
cma.cma_cpu_dooffline = fmd_prop_get_int32(hdl, "cpu_offline_enable");
cma.cma_cpu_forcedoffline = fmd_prop_get_int32(hdl,
cma.cma_cpu_doonline = fmd_prop_get_int32(hdl, "cpu_online_enable");
cma.cma_cpu_doblacklist = fmd_prop_get_int32(hdl,
cma.cma_cpu_dounblacklist = fmd_prop_get_int32(hdl,
cma.cma_page_doretire = fmd_prop_get_int32(hdl, "page_retire_enable");
cma.cma_page_dounretire = fmd_prop_get_int32(hdl,
if (cma.cma_page_maxdelay < cma.cma_page_mindelay)
if (!cma.cma_page_dounretire) {
if (!cma.cma_page_doretire) {
page->pg_next = cma.cma_pages;
cma.cma_pages = page;
if (cma.cma_page_timerid != 0)
fmd_timer_remove(hdl, cma.cma_page_timerid);
cma.cma_page_curdelay = cma.cma_page_mindelay;
cma.cma_page_timerid =
fmd_timer_install(hdl, NULL, NULL, cma.cma_page_curdelay);
cma.cma_page_timerid = 0;
pagep = &cma.cma_pages;
if (cma.cma_pages == NULL)
cma.cma_page_curdelay = MIN(cma.cma_page_curdelay * 2,
cma.cma_page_maxdelay);
(u_longlong_t)(cma.cma_page_curdelay / NANOSEC));
cma.cma_page_timerid =
fmd_timer_install(hdl, NULL, NULL, cma.cma_page_curdelay);
while ((page = cma.cma_pages) != NULL) {
cma.cma_pages = page->pg_next;