/* *XXX-Thisneedstobemuchsmarteraboutwhereitputscopiesofthe *kernel.Forexample,weshouldneverputacopyonaheadlessnode, *andweshouldrespectthetopologyofthemachine.
*/ void __init setup_replication_mask(void)
{ /* Set only the master cnode's bit. The master cnode is always 0. */
nodes_clear(ktext_repmask);
node_set(0, ktext_repmask);
#ifdef CONFIG_REPLICATE_KTEXT #ifndef CONFIG_MAPPED_KERNEL #error Kernel replication works with mapped kernel support. No calias support. #endif
{
nasid_t nasid;
for_each_online_node(nasid) { if (nasid == 0) continue; /* Advertise that we have a copy of the kernel */
node_set(nasid, ktext_repmask);
}
} #endif /* Set up a GDA pointer to the replication mask. */
GDA->g_ktext_repmask = &ktext_repmask;
}
/* XXX - When the BTE works, we should use it instead of this. */ static __init void copy_kernel(nasid_t dest_nasid)
{ unsignedlong dest_kern_start, source_start, source_end, kern_size;
/* Record where the master node should get its kernel text */
set_ktext_source(master_nasid, master_nasid);
for_each_online_node(client_nasid) { if (client_nasid == 0) continue;
/* Check if this node should get a copy of the kernel */ if (node_isset(client_nasid, ktext_repmask)) {
server_nasid = client_nasid;
copy_kernel(server_nasid);
}
/* Record where this node should get its kernel text */
set_ktext_source(client_nasid, server_nasid);
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.