mirror of
https://github.com/google/comprehensive-rust.git
synced 2025-01-20 05:09:57 +02:00
fa: src/bare-metal par 2/3 (#2328)
fa: src/bare-metal par 2/3 --------- Co-authored-by: javad-jafari <javajafarifromsharak@gmail.com> Co-authored-by: javad-jafari <65780584+javad-jafari@users.noreply.github.com>
This commit is contained in:
parent
6c0204fd50
commit
213d02aedc
193
po/fa.po
193
po/fa.po
@ -17419,90 +17419,116 @@ msgid ""
|
||||
"predictable layout, as default Rust representation allows the compiler to "
|
||||
"(among other things) reorder fields however it sees fit."
|
||||
msgstr ""
|
||||
" [`#[repr(C)]`](https://doc.rust-lang.org/reference/type-layout.html#the-c-"
|
||||
"representation) به کامپایلر می گوید که فیلدهای ساختاری را به ترتیب قرار دهد "
|
||||
"و این پیروی از قوانین مشابه با زبان C است. این کار را برای ساختار ما برای "
|
||||
"داشتن یک طرح قابل پیشبینی ضروری است، زیرا نمایش پیشفرض Rust به کامپایلر "
|
||||
"اجازه می دهد تا (از جمله موارد دیگر) فیلدها را به هر نحوی که صلاح بداند مرتب "
|
||||
"کند."
|
||||
|
||||
#: src/bare-metal/aps/better-uart/driver.md:3
|
||||
msgid "Now let's use the new `Registers` struct in our driver."
|
||||
msgstr ""
|
||||
msgstr "حال بیایید از ساختار جدید `Registers` در درایور خود استفاده کنیم."
|
||||
|
||||
#: src/bare-metal/aps/better-uart/driver.md:6
|
||||
#, fuzzy
|
||||
msgid "/// Driver for a PL011 UART.\n"
|
||||
msgstr ""
|
||||
msgstr "/// Driver for a PL011 UART.\n"
|
||||
|
||||
#: src/bare-metal/aps/better-uart/driver.md:30
|
||||
#: src/bare-metal/aps/better-uart/driver.md:56
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"// SAFETY: We know that self.registers points to the control registers\n"
|
||||
" // of a PL011 device which is appropriately mapped.\n"
|
||||
msgstr ""
|
||||
"// SAFETY: We know that self.registers points to the control registers\n"
|
||||
" // of a PL011 device which is appropriately mapped.\n"
|
||||
|
||||
#: src/bare-metal/aps/better-uart/driver.md:41
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"/// Reads and returns a pending byte, or `None` if nothing has been\n"
|
||||
" /// received.\n"
|
||||
msgstr ""
|
||||
"/// Reads and returns a pending byte, or `None` if nothing has been\n"
|
||||
" /// received.\n"
|
||||
"\n"
|
||||
|
||||
#: src/bare-metal/aps/better-uart/driver.md:47
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"// SAFETY: We know that self.registers points to the control\n"
|
||||
" // registers of a PL011 device which is appropriately mapped.\n"
|
||||
msgstr ""
|
||||
"// SAFETY: We know that self.registers points to the control\n"
|
||||
" // registers of a PL011 device which is appropriately mapped.\n"
|
||||
|
||||
#: src/bare-metal/aps/better-uart/driver.md:50
|
||||
#, fuzzy
|
||||
msgid "// TODO: Check for error conditions in bits 8-11.\n"
|
||||
msgstr ""
|
||||
msgstr "// TODO: Check for error conditions in bits 8-11.\n"
|
||||
|
||||
#: src/bare-metal/aps/better-uart/driver.md:65
|
||||
msgid ""
|
||||
"Note the use of `addr_of!` / `addr_of_mut!` to get pointers to individual "
|
||||
"fields without creating an intermediate reference, which would be unsound."
|
||||
msgstr ""
|
||||
"به استفاده از `addr_of!` / `addr_of_mut!` برای دریافت pointerها به فیلدهای "
|
||||
"جداگانه بدون ایجاد یک reference میانی توجه کنید، که ممکن است نادرست باشد."
|
||||
|
||||
#: src/bare-metal/aps/better-uart/using.md:1
|
||||
#: src/bare-metal/aps/logging/using.md:1
|
||||
msgid "Using it"
|
||||
msgstr ""
|
||||
msgstr "با استفاده از آن"
|
||||
|
||||
#: src/bare-metal/aps/better-uart/using.md:3
|
||||
msgid ""
|
||||
"Let's write a small program using our driver to write to the serial console, "
|
||||
"and echo incoming bytes."
|
||||
msgstr ""
|
||||
"بیایید یک برنامه کوچک با استفاده از درایور خود بنویسیم تا روی کنسول سریال "
|
||||
"بنویسیم و بایتهای ورودی را echo کنیم."
|
||||
|
||||
#: src/bare-metal/aps/better-uart/using.md:19
|
||||
#: src/bare-metal/aps/logging/using.md:18
|
||||
#: src/exercises/bare-metal/solutions-afternoon.md:33
|
||||
#, fuzzy
|
||||
msgid "/// Base address of the primary PL011 UART.\n"
|
||||
msgstr ""
|
||||
msgstr "/// Base address of the primary PL011 UART.\n"
|
||||
|
||||
#: src/bare-metal/aps/better-uart/using.md:25
|
||||
#: src/bare-metal/aps/logging/using.md:24
|
||||
#: src/exercises/bare-metal/solutions-afternoon.md:44
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"// SAFETY: `PL011_BASE_ADDRESS` is the base address of a PL011 device, and\n"
|
||||
" // nothing else accesses that address range.\n"
|
||||
msgstr ""
|
||||
"// SAFETY: `PL011_BASE_ADDRESS` is the base address of a PL011 device, and\n"
|
||||
" // nothing else accesses that address range.\n"
|
||||
|
||||
#: src/bare-metal/aps/better-uart/using.md:29
|
||||
#: src/bare-metal/aps/logging/using.md:29
|
||||
msgid "\"main({x0:#x}, {x1:#x}, {x2:#x}, {x3:#x})\""
|
||||
msgstr ""
|
||||
msgstr "\"main({x0:#x}, {x1:#x}, {x2:#x}, {x3:#x})\""
|
||||
|
||||
#: src/bare-metal/aps/better-uart/using.md:35
|
||||
msgid "b'\\r'"
|
||||
msgstr ""
|
||||
msgstr "b'\\r'"
|
||||
|
||||
#: src/bare-metal/aps/better-uart/using.md:36
|
||||
#: src/concurrency/async-pitfalls/cancellation.md:27
|
||||
msgid "b'\\n'"
|
||||
msgstr ""
|
||||
msgstr "b'\\n'"
|
||||
|
||||
#: src/bare-metal/aps/better-uart/using.md:38
|
||||
msgid "b'q'"
|
||||
msgstr ""
|
||||
msgstr "b'q'"
|
||||
|
||||
#: src/bare-metal/aps/better-uart/using.md:44
|
||||
msgid "\"Bye!\""
|
||||
msgstr ""
|
||||
msgstr "\"Bye!\""
|
||||
|
||||
#: src/bare-metal/aps/better-uart/using.md:51
|
||||
msgid ""
|
||||
@ -17510,11 +17536,16 @@ msgid ""
|
||||
"function is called from our entry point code in `entry.S`. See the speaker "
|
||||
"notes there for details."
|
||||
msgstr ""
|
||||
"همانطور که در مثال [inline assembly](../inline-assembly.md)، این تابع `main` "
|
||||
"از کد نقطه ورودی ما در `entry.S` فراخوانی میشود. برای جزئیات بیشتر، "
|
||||
"یادداشتهای سخنرانیها را در آنجا ببینید."
|
||||
|
||||
#: src/bare-metal/aps/better-uart/using.md:54
|
||||
msgid ""
|
||||
"Run the example in QEMU with `make qemu` under `src/bare-metal/aps/examples`."
|
||||
msgstr ""
|
||||
"مثال را در QEMU با `make qemu` در زیر `src/bare-metal/aps/examples` اجرا "
|
||||
"کنید."
|
||||
|
||||
#: src/bare-metal/aps/logging.md:3
|
||||
msgid ""
|
||||
@ -17522,39 +17553,48 @@ msgid ""
|
||||
"(https://crates.io/crates/log) crate. We can do this by implementing the "
|
||||
"`Log` trait."
|
||||
msgstr ""
|
||||
"خوب است که بتوانید از ماکروهای logging از crate [`log`](https://crates.io/"
|
||||
"crates/log) استفاده کنید. ما میتوانیم این کار را با اجرای ویژگی `Log` انجام "
|
||||
"دهیم."
|
||||
|
||||
#: src/bare-metal/aps/logging.md:26
|
||||
msgid "\"[{}] {}\""
|
||||
msgstr ""
|
||||
msgstr "\"[{}] {}\""
|
||||
|
||||
#: src/bare-metal/aps/logging.md:35
|
||||
#, fuzzy
|
||||
msgid "/// Initialises UART logger.\n"
|
||||
msgstr ""
|
||||
msgstr "/// Initialises UART logger.\n"
|
||||
|
||||
#: src/bare-metal/aps/logging.md:48
|
||||
msgid ""
|
||||
"The unwrap in `log` is safe because we initialise `LOGGER` before calling "
|
||||
"`set_logger`."
|
||||
msgstr ""
|
||||
"باز کردن در`log` ایمن است زیرا `LOGGER` را قبل از فراخوانی `set_logger` "
|
||||
"مقداردهی اولیه میکنیم."
|
||||
|
||||
#: src/bare-metal/aps/logging/using.md:3
|
||||
msgid "We need to initialise the logger before we use it."
|
||||
msgstr ""
|
||||
msgstr "قبل از استفاده از لاگر باید مقداردهی اولیه کنیم."
|
||||
|
||||
#: src/bare-metal/aps/logging/using.md:38
|
||||
#: src/exercises/bare-metal/solutions-afternoon.md:115
|
||||
msgid "\"{info}\""
|
||||
msgstr ""
|
||||
msgstr "\"{info}\""
|
||||
|
||||
#: src/bare-metal/aps/logging/using.md:46
|
||||
msgid "Note that our panic handler can now log details of panics."
|
||||
msgstr ""
|
||||
"توجه داشته باشید که panic handler ما اکنون می تواند جزئیات panic را ثبت کند."
|
||||
|
||||
#: src/bare-metal/aps/logging/using.md:47
|
||||
msgid ""
|
||||
"Run the example in QEMU with `make qemu_logger` under `src/bare-metal/aps/"
|
||||
"examples`."
|
||||
msgstr ""
|
||||
"مثال را در QEMU با `make qemu_logger` در زیر `src/bare-metal/aps/examples` "
|
||||
"اجرا کنید."
|
||||
|
||||
#: src/bare-metal/aps/exceptions.md:3
|
||||
msgid ""
|
||||
@ -17564,24 +17604,35 @@ msgid ""
|
||||
"We implement this in assembly to save volatile registers to the stack before "
|
||||
"calling into Rust code:"
|
||||
msgstr ""
|
||||
" AArch64 یک جدول برداری استثنایی با ۱۶ ورودی، برای ۴ نوع استثنا "
|
||||
"(synchronous، IRQ، FIQ، SError) از ۴ حالت (Ecurrent EL with SP0, current EL "
|
||||
"with SPx, lower EL using AArch64, lower EL using AArch32) تعریف میکند. ما "
|
||||
"این کار را در اسمبلی پیادهسازی میکنیم تا رجیسترهای فرار (volatile) را قبل از "
|
||||
"فراخوانی Rust در stack ذخیره کنیم:"
|
||||
|
||||
#: src/bare-metal/aps/exceptions.md:67
|
||||
msgid "EL is exception level; all our examples this afternoon run in EL1."
|
||||
msgstr ""
|
||||
" EL سطح استثنا است. تمام نمونههای ما امروز بعدازظهر در EL1 اجرا میشوند."
|
||||
|
||||
#: src/bare-metal/aps/exceptions.md:68
|
||||
msgid ""
|
||||
"For simplicity we aren't distinguishing between SP0 and SPx for the current "
|
||||
"EL exceptions, or between AArch32 and AArch64 for the lower EL exceptions."
|
||||
msgstr ""
|
||||
"برای سادگی، ما بین SP0 و SPx برای استثناهای EL فعلی، یا بین AArch32 و "
|
||||
"AArch64 برای استثناهای پایین EL تمایز قائل نمیشویم."
|
||||
|
||||
#: src/bare-metal/aps/exceptions.md:70
|
||||
msgid ""
|
||||
"For this example we just log the exception and power down, as we don't "
|
||||
"expect any of them to actually happen."
|
||||
msgstr ""
|
||||
"برای این مثال، ما فقط exception را log کرده و سپس خاموش میکنیم، زیرا انتظار "
|
||||
"نداریم هیچ یک از آنها واقعاً اتفاق بیفتد."
|
||||
|
||||
#: src/bare-metal/aps/exceptions.md:72
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"We can think of exception handlers and our main execution context more or "
|
||||
"less like different threads. [`Send` and `Sync`](../../concurrency/send-sync."
|
||||
@ -17590,64 +17641,87 @@ msgid ""
|
||||
"rest of the program, and it's `Send` but not `Sync`, then we'll need to wrap "
|
||||
"it in something like a `Mutex` and put it in a static."
|
||||
msgstr ""
|
||||
"میتوانیم به handlerهای exception و context اجرای اصلیمان کمابیش مانند "
|
||||
"threadهای مختلف فکر کنیم. [`Send` and `Sync`](../../concurrency/send-sync."
|
||||
"md) آنچه را که میتوانیم بین آنها به اشتراک بگذاریم، دقیقاً مانند threadها، "
|
||||
"کنترل میکنند. برای مثال، اگر میخواهیم مقداری را بین handlerهای exception و "
|
||||
"بقیه برنامه به اشتراک بگذاریم که بیشتر در مورد `Send` است اما مربوط به "
|
||||
"`Sync` نیست، باید آن را در چیزی مانند`Mutex` محصور کرده و یک استاتیک در آن "
|
||||
"قرار دهیم."
|
||||
|
||||
#: src/bare-metal/aps/other-projects.md:3
|
||||
msgid "[oreboot](https://github.com/oreboot/oreboot)"
|
||||
msgstr ""
|
||||
msgstr "[oreboot](https://github.com/oreboot/oreboot)"
|
||||
|
||||
#: src/bare-metal/aps/other-projects.md:4
|
||||
#, fuzzy
|
||||
msgid "\"coreboot without the C\""
|
||||
msgstr ""
|
||||
msgstr "\"coreboot without the C\""
|
||||
|
||||
#: src/bare-metal/aps/other-projects.md:5
|
||||
msgid "Supports x86, aarch64 and RISC-V."
|
||||
msgstr ""
|
||||
msgstr "پشتیبانی از x86، aarch64 و RISC-V."
|
||||
|
||||
#: src/bare-metal/aps/other-projects.md:6
|
||||
msgid "Relies on LinuxBoot rather than having many drivers itself."
|
||||
msgstr ""
|
||||
msgstr "به جای اینکه خود درایورهای زیادی داشته باشد، به LinuxBoot متکی است."
|
||||
|
||||
#: src/bare-metal/aps/other-projects.md:7
|
||||
msgid ""
|
||||
"[Rust RaspberryPi OS tutorial](https://github.com/rust-embedded/rust-"
|
||||
"raspberrypi-OS-tutorials)"
|
||||
msgstr ""
|
||||
"[Rust RaspberryPi OS tutorial](https://github.com/rust-embedded/rust-"
|
||||
"raspberrypi-OS-tutorials)"
|
||||
|
||||
#: src/bare-metal/aps/other-projects.md:8
|
||||
msgid ""
|
||||
"Initialisation, UART driver, simple bootloader, JTAG, exception levels, "
|
||||
"exception handling, page tables"
|
||||
msgstr ""
|
||||
"راهاندازی، درایور UART و bootloader ساده، JTAG، سطوح exception، مدیریت "
|
||||
"exception و page tableها"
|
||||
|
||||
#: src/bare-metal/aps/other-projects.md:10
|
||||
msgid ""
|
||||
"Some dodginess around cache maintenance and initialisation in Rust, not "
|
||||
"necessarily a good example to copy for production code."
|
||||
msgstr ""
|
||||
"برخی ابهامات در مورد نگهداری کَش و راهاندازی اولیه در Rust، لزوماً مثال خوبی "
|
||||
"برای کپی کردن برای کد production نیست."
|
||||
|
||||
#: src/bare-metal/aps/other-projects.md:12
|
||||
msgid "[`cargo-call-stack`](https://crates.io/crates/cargo-call-stack)"
|
||||
msgstr ""
|
||||
msgstr "[`cargo-call-stack`](https://crates.io/crates/cargo-call-stack)"
|
||||
|
||||
#: src/bare-metal/aps/other-projects.md:13
|
||||
msgid "Static analysis to determine maximum stack usage."
|
||||
msgstr ""
|
||||
msgstr "تجزیهوتحلیل استاتیک برای تعیین حداکثر استفاده از stack."
|
||||
|
||||
#: src/bare-metal/aps/other-projects.md:17
|
||||
msgid ""
|
||||
"The RaspberryPi OS tutorial runs Rust code before the MMU and caches are "
|
||||
"enabled. This will read and write memory (e.g. the stack). However:"
|
||||
msgstr ""
|
||||
"آموزش سیستم عامل RaspberryPi، کد Rust را قبل از فعال شدن MMU و حافظه کَش اجرا "
|
||||
"میکند. این کار memory را میخواند و روی آن مینویسد (به عنوان مثال stack). "
|
||||
"بااینحال:"
|
||||
|
||||
#: src/bare-metal/aps/other-projects.md:19
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Without the MMU and cache, unaligned accesses will fault. It builds with "
|
||||
"`aarch64-unknown-none` which sets `+strict-align` to prevent the compiler "
|
||||
"generating unaligned accesses so it should be alright, but this is not "
|
||||
"necessarily the case in general."
|
||||
msgstr ""
|
||||
"بدون MMU و حافظه کَش، دسترسیهای بدون تراز دچار خطا خواهند شد.اینها با "
|
||||
"`aarch64-unknown-none` ساخته میشود که `+strict-align` را تنظیم کنند تا از "
|
||||
"ایجاد دسترسیهای غیرهمتراز توسط کامپایلر جلوگیری کند، بنابراین همیشه باید "
|
||||
"صحیح باشد، اما لزوماً اینطور نیست."
|
||||
|
||||
#: src/bare-metal/aps/other-projects.md:23
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"If it were running in a VM, this can lead to cache coherency issues. The "
|
||||
"problem is that the VM is accessing memory directly with the cache disabled, "
|
||||
@ -17657,6 +17731,13 @@ msgid ""
|
||||
"alright in this particular case (running directly on the hardware with no "
|
||||
"hypervisor), but isn't a good pattern in general."
|
||||
msgstr ""
|
||||
"اگر در VM اجرا میشد، این میتواند منجر به مشکلات انسجام کَش (cache coherency) "
|
||||
"شود. مشکل این است که ماشین مجازی مستقیماً با حافظه کَش غیرفعال شده به حافظه "
|
||||
"دسترسی پیدا میکند، درحالیکه host دارای alias قابل کَش برای همان حافظه است. "
|
||||
"حتی اگر host به طور صریح به حافظه دسترسی نداشته باشد، دسترسیهای موقتی "
|
||||
"میتواند منجر به پر شدن حافظه کَش شود و سپس تغییرات از یکی پس از دیگری از بین "
|
||||
"میرود. باز هم در این مورد خاص درست است (مستقیماً روی سختافزار بدون hypervisor "
|
||||
"اجرا میشود)، اما بهطورکلی الگوی خوبی نیست."
|
||||
|
||||
#: src/bare-metal/useful-crates.md
|
||||
msgid "Useful crates"
|
||||
@ -17667,6 +17748,8 @@ msgid ""
|
||||
"We'll go over a few crates which solve some common problems in bare-metal "
|
||||
"programming."
|
||||
msgstr ""
|
||||
"ما به چند crate میپردازیم که برخی از مشکلات رایج در برنامهنویسی bare-metal "
|
||||
"را حل میکند."
|
||||
|
||||
#: src/bare-metal/useful-crates/zerocopy.md:3
|
||||
msgid ""
|
||||
@ -17674,6 +17757,8 @@ msgid ""
|
||||
"traits and macros for safely converting between byte sequences and other "
|
||||
"types."
|
||||
msgstr ""
|
||||
"این crate [`zerocopy`](https://docs.rs/zerocopy/) (از Fuchsia) صفات و "
|
||||
"ماکروهایی را برای تبدیل ایمن بین دنبالههای بایت و انواع دیگر فراهم میکند."
|
||||
|
||||
#: src/bare-metal/useful-crates/zerocopy.md:42
|
||||
msgid ""
|
||||
@ -17681,12 +17766,18 @@ msgid ""
|
||||
"but can be useful for working with structures shared with hardware e.g. by "
|
||||
"DMA, or sent over some external interface."
|
||||
msgstr ""
|
||||
"این برای MMIO مناسب نیست (زیرا از خواندن و نوشتن فرار یا volatile استفاده "
|
||||
"نمیکند)، اما میتواند برای کار با ساختارهای مشترک با سخت افزار مفید باشد. "
|
||||
"توسط DMA، یا از طریق برخی از رابطهای خارجی ارسال میشود."
|
||||
|
||||
#: src/bare-metal/useful-crates/zerocopy.md:48
|
||||
msgid ""
|
||||
"`FromBytes` can be implemented for types for which any byte pattern is "
|
||||
"valid, and so can safely be converted from an untrusted sequence of bytes."
|
||||
msgstr ""
|
||||
" `FromBytes` را میتوان برای انواعی که هر الگوی بایتی برای آنها معتبر است "
|
||||
"پیادهسازی کرد و بنابراین میتوان با خیال راحت از یک دنباله بایتهای نامعتبر "
|
||||
"تبدیل کرد."
|
||||
|
||||
#: src/bare-metal/useful-crates/zerocopy.md:50
|
||||
msgid ""
|
||||
@ -17694,11 +17785,16 @@ msgid ""
|
||||
"`RequestType` doesn't use all possible u32 values as discriminants, so not "
|
||||
"all byte patterns are valid."
|
||||
msgstr ""
|
||||
"تلاش برای استخراج `FromBytes` برای این تایپها ناموفق خواهد بود، زیرا "
|
||||
"`RequestType` از همه مقادیر ممکن u32 به عنوان متمایزکننده استفاده نمیکند، "
|
||||
"بنابراین همه الگوهای بایت معتبر نیستند."
|
||||
|
||||
#: src/bare-metal/useful-crates/zerocopy.md:53
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"`zerocopy::byteorder` has types for byte-order aware numeric primitives."
|
||||
msgstr ""
|
||||
" `zerocopy::byteorder` دارای تایپهای برای اعداد اولیه مطلع از byte-order است."
|
||||
|
||||
#: src/bare-metal/useful-crates/zerocopy.md:54
|
||||
msgid ""
|
||||
@ -17706,6 +17802,8 @@ msgid ""
|
||||
"zerocopy-example/`. (It won't run in the Playground because of the crate "
|
||||
"dependency.)"
|
||||
msgstr ""
|
||||
"مثال را با `cargo run` در `src/bare-metal/useful-crates/zerocopy-example/"
|
||||
"`اجرا کنید. (به دلیل وابستگی به crate در Playground اجرا نمیشود.)"
|
||||
|
||||
#: src/bare-metal/useful-crates/aarch64-paging.md:3
|
||||
msgid ""
|
||||
@ -17713,24 +17811,32 @@ msgid ""
|
||||
"you create page tables according to the AArch64 Virtual Memory System "
|
||||
"Architecture."
|
||||
msgstr ""
|
||||
"این crate [`aarch64-paging`](https://crates.io/crates/aarch64-paging) به شما "
|
||||
"امکان میدهد page tableها را مطابق با معماری سیستم حافظهمجازی AArch64 ایجاد "
|
||||
"کنید."
|
||||
|
||||
#: src/bare-metal/useful-crates/aarch64-paging.md:14
|
||||
#, fuzzy
|
||||
msgid "// Create a new page table with identity mapping.\n"
|
||||
msgstr ""
|
||||
msgstr "// Create a new page table with identity mapping.\n"
|
||||
|
||||
#: src/bare-metal/useful-crates/aarch64-paging.md:16
|
||||
#, fuzzy
|
||||
msgid "// Map a 2 MiB region of memory as read-only.\n"
|
||||
msgstr ""
|
||||
msgstr "// Map a 2 MiB region of memory as read-only.\n"
|
||||
|
||||
#: src/bare-metal/useful-crates/aarch64-paging.md:21
|
||||
#, fuzzy
|
||||
msgid "// Set `TTBR0_EL1` to activate the page table.\n"
|
||||
msgstr ""
|
||||
msgstr "// Set `TTBR0_EL1` to activate the page table.\n"
|
||||
|
||||
#: src/bare-metal/useful-crates/aarch64-paging.md:28
|
||||
msgid ""
|
||||
"For now it only supports EL1, but support for other exception levels should "
|
||||
"be straightforward to add."
|
||||
msgstr ""
|
||||
"در حال حاضر فقط از EL1 پشتیبانی میکند، اما پشتیبانی از سایر سطوح استثنا باید "
|
||||
"ساده باشد."
|
||||
|
||||
#: src/bare-metal/useful-crates/aarch64-paging.md:30
|
||||
msgid ""
|
||||
@ -17738,12 +17844,17 @@ msgid ""
|
||||
"com/android/platform/superproject/+/master:packages/modules/Virtualization/"
|
||||
"pvmfw/)."
|
||||
msgstr ""
|
||||
"این مورد در Android برای [Protected VM Firmware](https://cs.android.com/"
|
||||
"android/platform/superproject/+/master:packages/modules/Virtualization/"
|
||||
"pvmfw/) استفاده میشود."
|
||||
|
||||
#: src/bare-metal/useful-crates/aarch64-paging.md:31
|
||||
msgid ""
|
||||
"There's no easy way to run this example, as it needs to run on real hardware "
|
||||
"or under QEMU."
|
||||
msgstr ""
|
||||
"هیچ راه آسانی برای اجرای این مثال وجود ندارد، زیرا باید روی سختافزار واقعی "
|
||||
"یا تحت QEMU اجرا شود."
|
||||
|
||||
#: src/bare-metal/useful-crates/buddy_system_allocator.md:3
|
||||
msgid ""
|
||||
@ -17756,10 +17867,19 @@ msgid ""
|
||||
"allocating other address space. For example, we might want to allocate MMIO "
|
||||
"space for PCI BARs:"
|
||||
msgstr ""
|
||||
" ['buddy_system_allocator'](https://crates.io/crates/buddy_system_allocator) "
|
||||
"یک third-party crate است که یک buddy system allocator را پیادهسازی میکند. "
|
||||
"میتوان آن را هم برای ['LockedHeap'](https://docs.rs/"
|
||||
"buddy_system_allocator/0.9.0/buddy_system_allocator/struct.LockedHeap.html) "
|
||||
"در پیادهسازی [`GlobalAlloc`](https://doc.rust-lang.org/core/alloc/trait."
|
||||
"GlobalAlloc.html) استفاده کرد. بنابراین میتوانید از crate استاندارد `alloc` "
|
||||
"(همانطور که [قبل از](../alloc.md) دیدیم) یا برای تخصیص فضای آدرس دیگر "
|
||||
"استفاده کنید. به عنوان مثال، ممکن است بخواهیم فضای MMIO را برای PCI BARها "
|
||||
"اختصاص دهیم:"
|
||||
|
||||
#: src/bare-metal/useful-crates/buddy_system_allocator.md:29
|
||||
msgid "PCI BARs always have alignment equal to their size."
|
||||
msgstr ""
|
||||
msgstr " PCI BARها همیشه دارای تراز برابر با اندازه خود هستند."
|
||||
|
||||
#: src/bare-metal/useful-crates/buddy_system_allocator.md:30
|
||||
msgid ""
|
||||
@ -17767,6 +17887,8 @@ msgid ""
|
||||
"allocator-example/`. (It won't run in the Playground because of the crate "
|
||||
"dependency.)"
|
||||
msgstr ""
|
||||
"مثال را با `cargo run` در `src/bare-metal/useful-crates/allocator-example/` "
|
||||
"اجرا کنید. (به دلیل وابستگی به crate در Playground اجرا نمیشود.)"
|
||||
|
||||
#: src/bare-metal/useful-crates/tinyvec.md:3
|
||||
msgid ""
|
||||
@ -17776,17 +17898,26 @@ msgid ""
|
||||
"allocated or on the stack, which keeps track of how many elements are used "
|
||||
"and panics if you try to use more than are allocated."
|
||||
msgstr ""
|
||||
"گاهی اوقات شما چیزی را میخواهید که بتوان آن را مانند Vec تغییر اندازه داد، "
|
||||
"اما بدون heap allocation که [`tinyvec`] (https://crates.io/crates/tinyvec) "
|
||||
"این را فراهم میکند: یک برداری که توسط یک آرایه یا برش پشتیبانی میشود که "
|
||||
"میتواند بهصورت ایستا allocate داده شود یا روی stack که تعداد عناصر استفاده "
|
||||
"شده را ردیابی میکند و اگر سعی کنید بیشتر از آنچه که اختصاصدادهشده را استفاده "
|
||||
"کنید panic میکند."
|
||||
|
||||
#: src/bare-metal/useful-crates/tinyvec.md:25
|
||||
msgid ""
|
||||
"`tinyvec` requires that the element type implement `Default` for "
|
||||
"initialisation."
|
||||
msgstr ""
|
||||
" `tinyvec` نیاز دارد که تایپ عنصر `Default` را برای مقداردهی اولیه اجرا کند."
|
||||
|
||||
#: src/bare-metal/useful-crates/tinyvec.md:27
|
||||
msgid ""
|
||||
"The Rust Playground includes `tinyvec`, so this example will run fine inline."
|
||||
msgstr ""
|
||||
" Rust Playground شامل `tinyvec` میشود، بنابراین این مثال بهخوبی به صورت "
|
||||
"داخلی اجرا میشود."
|
||||
|
||||
#: src/bare-metal/useful-crates/spin.md:3
|
||||
msgid ""
|
||||
@ -17794,22 +17925,31 @@ msgid ""
|
||||
"are not available in `core` or `alloc`. How can we manage synchronisation or "
|
||||
"interior mutability, such as for sharing state between different CPUs?"
|
||||
msgstr ""
|
||||
" `std::sync::Mutex` و دیگر موارد اولیه همگامسازی از `std::sync` در `core` یا "
|
||||
"`alloc` موجود نیستند. چگونه میتوانیم هماهنگسازی یا تغییرپذیری داخلی، مانند "
|
||||
"اشتراکگذاری وضعیت بین CPUهای مختلف را مدیریت کنیم؟"
|
||||
|
||||
#: src/bare-metal/useful-crates/spin.md:7
|
||||
msgid ""
|
||||
"The [`spin`](https://crates.io/crates/spin) crate provides spinlock-based "
|
||||
"equivalents of many of these primitives."
|
||||
msgstr ""
|
||||
"این crate [`spin`](https://crates.io/crates/spin) معادلهای مبتنی بر "
|
||||
"spinlock، بسیاری از این موارد اولیه را ارائه میکند."
|
||||
|
||||
#: src/bare-metal/useful-crates/spin.md:26
|
||||
msgid "Be careful to avoid deadlock if you take locks in interrupt handlers."
|
||||
msgstr ""
|
||||
"اگر در handlerهای وقفه قفل میکنید مراقب باشید که از بن بست(deadlock) جلوگیری "
|
||||
"کنید."
|
||||
|
||||
#: src/bare-metal/useful-crates/spin.md:27
|
||||
msgid ""
|
||||
"`spin` also has a ticket lock mutex implementation; equivalents of `RwLock`, "
|
||||
"`Barrier` and `Once` from `std::sync`; and `Lazy` for lazy initialisation."
|
||||
msgstr ""
|
||||
" `spin` همچنین دارای اجرای ticket lock mutex است. معادلهای `RwLock`, "
|
||||
"`Barrier` و `Once` از `std::sync`. و `Lazy` برای مقداردهی اولیه lazy."
|
||||
|
||||
#: src/bare-metal/useful-crates/spin.md:29
|
||||
msgid ""
|
||||
@ -17817,11 +17957,16 @@ msgid ""
|
||||
"useful types for late initialisation with a slightly different approach to "
|
||||
"`spin::once::Once`."
|
||||
msgstr ""
|
||||
"این crate ['once_cell'](https://crates.io/crates/once_cell) همچنین دارای "
|
||||
"تایپهای مفیدی برای مقداردهی اولیه دیرهنگام با رویکرد کمی متفاوت به `spin::"
|
||||
"once::Once` است."
|
||||
|
||||
#: src/bare-metal/useful-crates/spin.md:31
|
||||
msgid ""
|
||||
"The Rust Playground includes `spin`, so this example will run fine inline."
|
||||
msgstr ""
|
||||
" Playground Rust شامل `spin` است، بنابراین این مثال به خوبی به صورت داخلی "
|
||||
"اجرا میشود."
|
||||
|
||||
#: src/bare-metal/android.md
|
||||
msgid ""
|
||||
|
Loading…
x
Reference in New Issue
Block a user