feat: integra renaser (kernel SASOS bare-metal) al monorepo
renaser —kernel asíncrono de espacio de direcciones único, no-POSIX, `no_std` x86_64— entra al monorepo como su PROPIO workspace de Cargo, no fusionado: usa toolchain nightly, target `x86_64-unknown-none` y `panic = "abort"`, incompatibles con los perfiles globales de brahman. - `renaser/` — copia del proyecto (sin su `.git`; el repo original conserva su historia standalone). Workspace propio con su `rust-toolchain.toml` y `.cargo/`. - `exclude = ["renaser"]` en el workspace de brahman: Cargo lo trata como ajeno. - El kernel de renaser path-depende `mirada-layout` cruzando la frontera de workspace — primer núcleo compartido. Semilla de la Fase 8 (compositor): geometría de teselado compartida, framebuffer nativo de renaser; smithay se queda en el lado Linux. Verificado: `cargo build -p boot` compila kernel + imagen UEFI con mirada-layout enlazado para bare-metal. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
// =============================================================================
|
||||
// renaser :: kernel/src/sync.rs — la celda de inicializacion unica
|
||||
// -----------------------------------------------------------------------------
|
||||
// Las estructuras globales del kernel (GDT, TSS, IDT, el heap...) nacen una
|
||||
// sola vez, durante el arranque secuencial y de un solo hilo, y despues solo
|
||||
// se leen. `CeldaSync` envuelve ese unico `unsafe` en una abstraccion comun:
|
||||
// un contrato de unicidad que el codigo de arranque garantiza por construccion.
|
||||
// =============================================================================
|
||||
|
||||
use core::cell::UnsafeCell;
|
||||
|
||||
/// Celda `Sync` para estado global de inicializacion unica.
|
||||
pub(crate) struct CeldaSync<T>(UnsafeCell<T>);
|
||||
|
||||
// SEGURIDAD: cada celda se escribe una sola vez, durante el arranque, antes de
|
||||
// que existan interrupciones o concurrencia; despues es de solo lectura.
|
||||
unsafe impl<T> Sync for CeldaSync<T> {}
|
||||
|
||||
impl<T> CeldaSync<T> {
|
||||
/// Crea una celda con su valor inicial.
|
||||
pub(crate) const fn nueva(valor: T) -> Self {
|
||||
CeldaSync(UnsafeCell::new(valor))
|
||||
}
|
||||
|
||||
/// Puntero crudo al contenido. Quien lo usa asume el contrato de unicidad.
|
||||
pub(crate) fn puntero(&self) -> *mut T {
|
||||
self.0.get()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user