feat(renaser): Fase 19 — voz del userspace hacia la red (pregon)
Tres capacidades nuevas en wasm/env (12-14): - sys_net_mac(salida) -> i32: escribe los seis bytes del MAC del dispositivo. 0 OK, -1 si no hay red. - sys_net_enviar(ptr, len) -> i32: envia un frame Ethernet crudo. Valida rango contra la memoria lineal del modulo. - sys_net_recibir(salida, capacidad) -> i32: drena UN paquete por llamada hacia el buffer del modulo. Devuelve los bytes copiados, 0 si nada pendiente, codigos negativos diagnosticos. Añadida red::recibir_en(buf) -> usize como su contraparte del driver: gemelo cooperativo de drenar_rx que aterriza en un buffer del usuario. App nueva pregon (apps/pregon/, 4.2 KiB WASM): lienzo 480x160, tipografia 8x8 (font8x8) escalada x2. Al init pide su MAC y anuncia su presencia con un broadcast Ethernet — destino FF:FF:FF:FF:FF:FF, EtherType experimental 0x88B5, payload ASCII 'renaser :: hola desde mi red'. En cada tick drena un paquete con sys_net_recibir y muestra el titulo, el MAC propio, las cuentas TX/RX, y los datos del ultimo frame entrante. GENESIS 8 -> 9 apps (pregon en posicion 2 detras de bitacora); CELDA_TASKBAR_ANCHO 130 -> 116 px para que las nueve pestañas + lanzador + reloj caben holgadas en 1280 px. tarea_red del kernel ya no drena RX (la cola pertenece al userspace), conserva solo el envio del ARP de prueba al arrancar. Verificada en QEMU con -object filter-dump. El pcap captura tres frames en orden: (1) broadcast 88B5 de pregon con su payload, (2) ARP request del kernel, (3) ARP reply del gateway 52:55:0a:00:02:02. La consola anuncia 'manifiesto :: 9 apps nacidas del grafo'. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -107,14 +107,16 @@ struct AppGenesis {
|
||||
region: (u32, u32, u32, u32),
|
||||
}
|
||||
|
||||
/// El userspace de genesis — las ocho aplicaciones que pueblan un disco recien
|
||||
/// forjado. La `bitacora` (Fase 17, editor que persiste), la melodia visual
|
||||
/// `tonada` (Fase 12), el compas visual `pulso` (Fase 11), un saludo (`hola`),
|
||||
/// la `memoriosa` interactiva que recuerda entre sesiones (Fase 7c), y tres
|
||||
/// demos de los guardarrailes del kernel: `discola` (combustible), `glotona`
|
||||
/// (memoria) y `cronista` (la cronica de los arranques).
|
||||
const GENESIS: [AppGenesis; 8] = [
|
||||
/// El userspace de genesis — las nueve aplicaciones que pueblan un disco recien
|
||||
/// forjado. La `bitacora` (Fase 17, editor que persiste), el `pregon` (Fase 19,
|
||||
/// la primera voz hacia la red), la melodia visual `tonada` (Fase 12), el
|
||||
/// compas visual `pulso` (Fase 11), un saludo (`hola`), la `memoriosa`
|
||||
/// interactiva que recuerda entre sesiones (Fase 7c), y tres demos de los
|
||||
/// guardarrailes del kernel: `discola` (combustible), `glotona` (memoria) y
|
||||
/// `cronista` (la cronica de los arranques).
|
||||
const GENESIS: [AppGenesis; 9] = [
|
||||
AppGenesis { nombre: "bitacora", archivo: "bitacora.wasm", region: (100, 120, 480, 280) },
|
||||
AppGenesis { nombre: "pregon", archivo: "pregon.wasm", region: (100, 120, 480, 160) },
|
||||
AppGenesis { nombre: "tonada", archivo: "tonada.wasm", region: (100, 120, 360, 120) },
|
||||
AppGenesis { nombre: "pulso", archivo: "pulso.wasm", region: (100, 120, 360, 120) },
|
||||
AppGenesis { nombre: "hola", archivo: "app.wasm", region: (100, 120, 480, 560) },
|
||||
|
||||
Reference in New Issue
Block a user