From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4696D382375 for ; Wed, 4 Mar 2026 20:07:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772654848; cv=none; b=QoatDLBa4A61feb8tppehloLW76yh5MASG50ryXV5xVQ0C/XF9ZSBL2aBCsK1B70SEuPpC23HJJQUsMcyV4Q6olkCprkKtunzG3t3I97fDTdehZlYoJJakEEyXVUInft9UepfIKr1JWGzy/qHX9eDVA7Mp2SpXZkLjyf3NFiT48= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772654848; c=relaxed/simple; bh=0uxA1f0XBAVF421MpriAjOWy6RoQQHyO77JA8FtcuvM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=RSpx2NVGf1K1KiXWwDfjvXpAjwOPSlmuufhH1q3d+84K3svNNcSHvWBPP0NWhrlFtl7AMp6mTqIMRXrmQjlXeBIrMw254JQ6XucVtfSzBt+WvzgwGrbk+5b11fS8pLI6+6lr87aRRzNbfaMaSnBveS2us1SJ6Jxrvw5HYqzvPXA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lgHUSJLt; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lgHUSJLt" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-4833115090dso74347345e9.3 for ; Wed, 04 Mar 2026 12:07:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772654846; x=1773259646; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=T6A7m9klttojpus1/LdNiDPHg4g29YVpD/OuNz+rU/0=; b=lgHUSJLtDvEUNFTihy2RlAlEGeqQnv2dlKHcnUSXlRV/srKWjPq1DuiEzb/y8ciyCk E0/cJQon+MZGSZIrNzBvaql3Q1yNSCaFten89Pnj01RaDT25XIKwlgQwt4t6hGs8DRCm mvex1tEHoTCfMTOY/DwiLrgqzYAX5ew7tYr+27yoPZXqPrWCo7YAeM/OCZgtW44z7zTY yPPsICUKSg/eCMh6laa9ZGytKisaNh5kKyeB2198FOaf5s4PBQ1j7KtGRhitW2+FKWWE DXvxKmyUAYcAuMhBjutrCfEwdJJ/tkbfvewi7zVlx/S9i0pqiZd3YVTjSgD+jQwHKVn8 YvFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772654846; x=1773259646; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=T6A7m9klttojpus1/LdNiDPHg4g29YVpD/OuNz+rU/0=; b=kLrtF0XEM8E1fWrB90YmAp6H/b5LkeRN//WxUWMaxgy+hSCxRptMCAGE/QZJDHaZxs FSE/GXAf9Sd5HORrQ+6gwiJZC08UcpjhaD3Ws5uJoiLRnSEHO8xazHTl0BplLqzNMYVu 9gnXgfvWINGei9IpNWemCuLwkYPaTHyUWHKFDa+GLdQL1GUHVu0kefknP5EZSnGWGPdR kmI9b2eE8djvCu0sz9W7Ftz1o/oxrQQ0r0ImVx13QkmYbvy0n4ug5JXfZiwg7SeXzsl4 754XL3TWbTo/1UFTzMd3XkBq+2/x5+03w17CBVT0xlqiDf+2rZ59RUmVp8FIIdLvX3MH qf7Q== X-Forwarded-Encrypted: i=1; AJvYcCUSyqSwGI7iZuuSXECfABqD5deDEqqbeyal//C5CgSaVsbfDVyTr0Wh7msX8N1Yvl+ZJAFLlQg+NJ8v8Z1AlQ==@vger.kernel.org X-Gm-Message-State: AOJu0YwDXlS5FtElPMWj6GHWTB1ugnHb2EXg6O2sV7XCtlxQSXUXOgBq rr/vGdz0ZopQuGlu0V7GpAxosKdWbSNy7gflZ8pJSIosEiuB+lfcTtKY X-Gm-Gg: ATEYQzxfUOnImV53hH4PiG3mP2XDZKc4nvH0K774f/KfjPgvpr1XuRtR15Ae/UHQprt VNovnpzUpa6JmnwzuqEnEZRAF6j84W1ZoveiCvmIaLZkp15y7GOicISfvx/WQawIxQlZou8nJyN gxIoD2UInshKQMT0/zfsrMWsTWxpmoeP1ASNPZD1pOFNMxqNaxuQefjle4A1/WS8/i98QVJr3sd PR0lScH/FUc7Tqtk896Z8vu7zWjywr+ID6ARaw1yXkjYUt9VZnel6kMhHQ0gCMOVt6vmreUga7N xOI5U9aUUVA/tvxg7QdxgIVjq9bUkT4xBiNiKLyHEFpZvyBmKCfb85qmPQ8gEF5qeWGFTKdA339 YamaDXlSNLlZjs9of/bTe/5jCgGVO6I9IWSIlaEhB6/bTxTfNQHLnER1pPWBSaxI680LmGDQZg3 iBpIxH93sMlfNLxAOLEtdfwqnXp4t9NuESbuNwF8Z1dgzceym/8aPgc9bF+ipM+ryY02FPRdgSi 9Dx+/iHik5009McT2fc61pkWkkvp2iAlUNE+XRAInBaNYSRP57M21tM7g== X-Received: by 2002:a05:600c:8b67:b0:483:afbb:a086 with SMTP id 5b1f17b1804b1-4851989c82emr54704555e9.29.1772654845402; Wed, 04 Mar 2026 12:07:25 -0800 (PST) Received: from localhost.localdomain ([80.233.57.185]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4851881224csm68872885e9.13.2026.03.04.12.07.24 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 04 Mar 2026 12:07:24 -0800 (PST) From: Edwin Toribio To: Carlos Bilbao Cc: carlos.bilbao@kernel.org, Jonathan Corbet , linux-doc@vger.kernel.org, rust-for-linux@vger.kernel.org, Edwin Toribio Subject: [PATCH v2 2/3] docs: sp_SP: Add Spanish translation for Rust general information Date: Wed, 4 Mar 2026 20:07:12 +0000 Message-ID: <20260304200715.76360-3-edwin.toribio.j@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260304200715.76360-1-edwin.toribio.j@gmail.com> References: <20260304200715.76360-1-edwin.toribio.j@gmail.com> Precedence: bulk X-Mailing-List: rust-for-linux@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Edwin Toribio --- .../sp_SP/rust/general-information.rst | 178 ++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100644 Documentation/translations/sp_SP/rust/general-information.rst diff --git a/Documentation/translations/sp_SP/rust/general-information.rst b/Documentation/translations/sp_SP/rust/general-information.rst new file mode 100644 index 000000000..5b7b0225d --- /dev/null +++ b/Documentation/translations/sp_SP/rust/general-information.rst @@ -0,0 +1,178 @@ +.. SPDX-License-Identifier: GPL-2.0 + +.. include:: ../disclaimer-sp.rst + +:Original: Documentation/rust/general-information.rst +:Translator: Edwin Toribio + +.. _sp_rust_general_information: + +Información general +=================== + +Este documento contiene información útil que conviene conocer cuando se trabaja +con el soporte de Rust en el kernel. + + +``no_std`` +---------- + +El soporte de Rust en el kernel solo puede vincularse a `core `_, +pero no a `std `_. Las cajas (crates) destinadas +al uso en el kernel deben optar por este comportamiento utilizando el atributo +``#![no_std]``. + + +.. _sp_rust_code_documentation: + +Documentación del código +------------------------ + +El código Rust del kernel se documenta mediante ``rustdoc``, su generador de +documentación integrado. + +Los documentos HTML generados incluyen búsqueda integrada, elementos enlazados +(p. ej. tipos, funciones, constantes), código fuente, etc. Pueden leerse en: + + https://rust.docs.kernel.org + +Para linux-next, consulte: + + https://rust.docs.kernel.org/next/ + +También existen etiquetas para cada lanzamiento principal, p. ej.: + + https://rust.docs.kernel.org/6.10/ + +La documentación también puede generarse y leerse fácilmente de forma local. +Esto es bastante rápido (del mismo orden que compilar el código en sí) y no se +necesitan herramientas ni entornos especiales. Esto tiene la ventaja añadida de +que estará adaptada a la configuración particular del kernel utilizada. Para +generarla, utilice el objetivo ``rustdoc`` con la misma invocación utilizada +para la compilación, p. ej.:: + + make LLVM=1 rustdoc + +Para leer la documentación localmente en su navegador web, ejecute por ejemplo:: + + xdg-open Documentation/output/rust/rustdoc/kernel/index.html + +Para aprender cómo escribir la documentación, consulte coding-guidelines.rst. + + +Lints adicionales +----------------- + +Aunque ``rustc`` es un compilador muy útil, existen algunos lints y análisis +adicionales disponibles a través de ``clippy``, un linter de Rust. Para +habilitarlo, pase ``CLIPPY=1`` a la misma invocación utilizada para la +compilación, p. ej.:: + + make LLVM=1 CLIPPY=1 + +Tenga en cuenta que Clippy puede cambiar la generación de código, por lo que no +debe habilitarse mientras se compila un kernel de producción. + + +Abstracciones vs. vínculos (bindings) +------------------------------------- + +Las abstracciones son código Rust que envuelve la funcionalidad del kernel desde +el lado de C. + +Para poder utilizar funciones y tipos del lado de C, se crean vínculos +(bindings). Los vínculos son las declaraciones para Rust de esas funciones y +tipos del lado de C. + +Por ejemplo, se podría escribir una abstracción ``Mutex`` en Rust que envuelva +un ``struct mutex`` del lado de C y llame a sus funciones a través de los +vínculos. + +Las abstracciones no están disponibles para todas las API internas y conceptos +del kernel, pero se pretende que la cobertura se amplíe con el tiempo. Los +módulos hoja ("Leaf") (p. ej. controladores/drivers) no deben utilizar los vínculos de C +directamente. En su lugar, los subsistemas deben proporcionar abstracciones tan +seguras como sea posible según sea necesario. + +.. code-block:: + + rust/bindings/ + (rust/helpers/) + + include/ -----+ <-+ + | | + drivers/ rust/kernel/ +----------+ <-+ | + fs/ | bindgen | | + .../ +-------------------+ +----------+ --+ | + | Abstracciones | | | + +---------+ | +------+ +------+ | +----------+ | | + | mi_foo | -----> | | foo | | bar | | -------> | Vínculos | <-+ | + | driver | Segura | | sub- | | sub- | | Insegura |(Bindings)| | + +---------+ | |sist. | |sist. | | | | | + | | +------+ +------+ | | caja | <-----+ + | | caja del kernel | | bindings | | + | +-------------------+ +----------+ | + | | + +------------------# PROHIBIDO #--------------------------------+ + +La idea principal es encapsular toda interacción directa con las API de C del +kernel en abstracciones cuidadosamente revisadas y documentadas. Entonces, los +usuarios de estas abstracciones no podrán introducir un comportamiento +indefinido (UB) siempre que: + +#. Las abstracciones sean correctas ("sound"). +#. Cualquier bloque ``unsafe`` respete el contrato de seguridad necesario para + llamar a las operaciones dentro del bloque. Del mismo modo, cualquier + implementación ``unsafe impl`` respete el contrato de seguridad necesario + para implementar el rasgo (trait). + +Vínculos (Bindings) +~~~~~~~~~~~~~~~~~~~ + +Al incluir una cabecera C de ``include/`` en +``rust/bindings/bindings_helper.h``, la herramienta ``bindgen`` generará +automáticamente los vínculos para el subsistema incluido. Tras la compilación, +vea los archivos de salida ``*_generated.rs`` en el directorio +``rust/bindings/``. + +Para las partes de la cabecera C que ``bindgen`` no genera automáticamente, p. ej. +funciones ``inline`` de C o macros no triviales, es aceptable añadir una pequeña +función de envoltura (wrapper) en ``rust/helpers/`` para que esté disponible +también para el lado de Rust. + +Abstracciones +~~~~~~~~~~~~~ + +Las abstracciones son la capa entre los vínculos y los usuarios dentro del +kernel. Se encuentran en ``rust/kernel/`` y su función es encapsular el acceso +inseguro (unsafe) a los vínculos en una API lo más segura posible que exponen a +sus usuarios. Los usuarios de las abstracciones incluyen elementos como +controladores o sistemas de archivos escritos en Rust. + +Además del aspecto de la seguridad, se supone que las abstracciones deben ser +"ergonómicas", en el sentido de que convierten las interfaces de C en código +Rust "idiomático". Ejemplos básicos son convertir la adquisición y liberación +de recursos de C en constructores y destructores de Rust, o los códigos de error +enteros de C en los tipos ``Result`` de Rust. + + +Compilación condicional +----------------------- + +El código Rust tiene acceso a la compilación condicional basada en la +configuración del kernel: + +.. code-block:: rust + + #[cfg(CONFIG_X)] // Habilitado (`y` o `m`) + #[cfg(CONFIG_X="y")] // Habilitado como integrado (`y`) + #[cfg(CONFIG_X="m")] // Habilitado como módulo (`m`) + #[cfg(not(CONFIG_X))] // Deshabilitado + +Para otros predicados que el ``cfg`` de Rust no soporta, p. ej. expresiones con +comparaciones numéricas, se puede definir un nuevo símbolo Kconfig: + +.. code-block:: kconfig + + config RUSTC_VERSION_MIN_107900 + def_bool y if RUSTC_VERSION >= 107900 \ No newline at end of file -- 2.53.0