From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (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 38065382F11 for ; Wed, 4 Mar 2026 20:07:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772654848; cv=none; b=dSx1IbmK5Rh1qOgc9XT+P8QgP4H5Tok9l+LBkfdINuzz5amY254puCJ3dji9BfQFFWqAL3e2j/SjUwgyiM6Np8uyiIP50yD9M5ulOb5YdbqZygBBFA2UXnO5pF06Y08NhkWbmu12l8pMoyDsxLmxE3aPFS7mBbbwXA5YmIsatR8= 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.47 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-f47.google.com with SMTP id 5b1f17b1804b1-4833115090dso74347335e9.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=Dp7oJC6lq/qIcSpFbVl2qBrQ77uSWXQlWpxtnpC/w7/rZdfHYU8lOG8KBNgjSDVDaU 51NUzkxDS8X+YZq4lTCWSyyhXE/CCO6l0fP+Jeh6a+3FuKY3Ml7Iey/uP3q0wzytMBjb fZp9aBgnhZdY5bSQqQ1JDjABqFcKXODM0tbppjVHNWAwRao4HyG0YfF840Yru1rX+9jW AMSK84uW/WaW4o6oU5nRRpAaKp32HDXuWs9oYaJKb8WAdJiV6XLB4Cp+bm0+UsiJ8SJq 6X52kevmZNI/qiWznZGNUE2Xl2TvDojqqARfTnwlHmbF9gsLc5c7bl3B0Ty+xwLwbCuB 0XUQ== X-Forwarded-Encrypted: i=1; AJvYcCUsBWkwT4gw8R9csNoy1fIq9LSTpLdF9n0trGG/wRCH24Ptf0uYQVnenUlxNPryl7OsJ2LqSdb/JH4=@vger.kernel.org X-Gm-Message-State: AOJu0YxG8RNldeT2zgxapxTuIf1WeHyi0qm0qGkCWZ30JDch6CJ7Xql4 xVUUZUp1pXODqWq10RuyypHgeTzpk3hWPKSJKkj2gu0SGFLrHIAOmwqq X-Gm-Gg: ATEYQzwCK1vndrUabbmib0reBN9PBWl2GWqTPt7VqfntERGb8YapaOmAjwwCr8ucKI3 UmFlh2jHrHq8hzbI5I14oCtOTiOVbbJW9iBsMNsI2F8s0bbMt2a13+lAixNLlp+rqG1t/++kmyp C8aFwmPZ4Urufr7WVmolD+K980CaHKM+D15S7QvI6S3YQO1FPTgmAU3CrrHrzM9aASFU2ytBPRV XZish2PtfmFeZd5WKFWlJW9PkjNFmwKuF/ZIf5eV/IhZThLW6EWYLyB9/fM7i+DdWY4vFvMpWlO P0E2QT7nYYZptI0861+vgsK2nMNswcdC3aPURxQzV7XYcM9a3oFYSGuRPgbqbABIhlOYWSzbhu9 DvuvbVfhClKCzlkhEQIUTPGcggJipmIl3bRTGJaB+vua9bfqiNQcsczDYvbbHPSzHox2gLv55ip ueBoX29NwVq+2qTouNCYOMJ+r85ADthkGEwcl1BNhjXieDCpOL54/wBuLkGrQ9Jo6M5ToGcgi+w cS49efDzPoSH40xI7rdZmIffaRur3zhLLy6D8fO3XAvo858F5rigIEQsQ== 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: linux-doc@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