From 08439f33d2bba2851dd0334cee6fe1114d235907 Mon Sep 17 00:00:00 2001 From: Andre Richter Date: Mon, 8 Aug 2022 00:05:25 +0200 Subject: [PATCH] Bump compiler and dependencies --- .rustfmt.toml | 2 -- 06_uart_chainloader/demo_payload_rpi3.img | Bin 7736 -> 7640 bytes 06_uart_chainloader/demo_payload_rpi4.img | Bin 7672 -> 7584 bytes 09_privilege_level/README.md | 2 +- 09_privilege_level/src/exception.rs | 2 +- .../src/exception.rs | 2 +- .../src/exception.rs | 2 +- 12_integrated_testing/Cargo.lock | 16 ++++++------- 12_integrated_testing/kernel/src/exception.rs | 2 +- .../Cargo.lock | 16 ++++++------- .../kernel/src/exception.rs | 2 +- 14_virtual_mem_part2_mmio_remap/Cargo.lock | 16 ++++++------- 14_virtual_mem_part2_mmio_remap/README.md | 15 ++++++------ .../kernel/src/exception.rs | 2 +- .../kernel/src/memory/mmu/mapping_record.rs | 3 +-- .../kernel/src/memory/mmu/types.rs | 10 ++++---- .../Cargo.lock | 16 ++++++------- .../README.md | 2 +- .../kernel/src/exception.rs | 2 +- .../kernel/src/memory/mmu/mapping_record.rs | 3 +-- .../src/memory/mmu/translation_table.rs | 2 +- .../kernel/src/memory/mmu/types.rs | 10 ++++---- .../Cargo.lock | 16 ++++++------- .../README.md | 2 +- .../kernel/src/exception.rs | 2 +- .../kernel/src/memory/mmu/mapping_record.rs | 3 +-- .../src/memory/mmu/translation_table.rs | 2 +- .../kernel/src/memory/mmu/types.rs | 10 ++++---- 17_kernel_symbols/Cargo.lock | 16 ++++++------- 17_kernel_symbols/README.md | 22 ++++++------------ 17_kernel_symbols/kernel/src/exception.rs | 2 +- .../kernel/src/memory/mmu/mapping_record.rs | 3 +-- .../src/memory/mmu/translation_table.rs | 2 +- .../kernel/src/memory/mmu/types.rs | 10 ++++---- 17_kernel_symbols/kernel/src/symbols.rs | 10 +++----- 18_backtrace/Cargo.lock | 16 ++++++------- 18_backtrace/kernel/src/exception.rs | 2 +- .../kernel/src/memory/mmu/mapping_record.rs | 3 +-- .../src/memory/mmu/translation_table.rs | 2 +- 18_backtrace/kernel/src/memory/mmu/types.rs | 10 ++++---- 18_backtrace/kernel/src/symbols.rs | 10 +++----- 19_kernel_heap/Cargo.lock | 20 ++++++++-------- 19_kernel_heap/README.md | 17 +++++++------- 19_kernel_heap/kernel/src/exception.rs | 2 +- .../src/memory/mmu/translation_table.rs | 2 +- 19_kernel_heap/kernel/src/memory/mmu/types.rs | 10 ++++---- 19_kernel_heap/kernel/src/symbols.rs | 10 +++----- X1_JTAG_boot/jtag_boot_rpi3.img | Bin 8792 -> 8680 bytes X1_JTAG_boot/jtag_boot_rpi4.img | Bin 7712 -> 7648 bytes rust-toolchain.toml | 2 +- 50 files changed, 152 insertions(+), 181 deletions(-) diff --git a/.rustfmt.toml b/.rustfmt.toml index 33aca681..c05f1817 100644 --- a/.rustfmt.toml +++ b/.rustfmt.toml @@ -5,5 +5,3 @@ format_code_in_doc_comments = true normalize_comments = true wrap_comments = true comment_width = 100 -report_fixme = "Always" -report_todo = "Always" diff --git a/06_uart_chainloader/demo_payload_rpi3.img b/06_uart_chainloader/demo_payload_rpi3.img index c0f226a7df2660c157a6e1360a4de8143631c965..bcb46b6137cabbe4e9a0e4e1bb1bda93b04267d1 100755 GIT binary patch delta 2223 zcmZuxT}%{L6h1SvyY8-t3%dxyB7>`07Z4~5EK~yv_=na?2x_8jQ3+A30%2_%U%E?q z@HZ*9Lt_7uqCD8UO%oDIif=ScQ%%#PXsb_wPlTbRplxG zk7G@&+3AWkr{G+HGtiVCEZC9~+*o7_7I`3;2txG*h&3le(mw8?)WmyMzH5a64q#ZG z0+JtFHxl7jaeR2abU`@K{yj|C(d58s?=2^R-t|O2!%^7>M7aud10pFyQ2nz721F2l z9T!?}i=&_2lz;qsTDIJq7XO-`W_y~zO)Tbs>V&YW2wc4J`IcL?KR6zLJLx4d&1UeqwPGsJQG02$6LQ+9lv%ltq&F zf@=ZQkO4;T;X5BEQ+qrV$$OmHQ!m7LsXn?&1yR<38?edZ&<|Hq( z>D&+3NN;6iW^886k*$xT2~;`Z6R3MZI-gM#EheM&UV>%rcjFAyZ6u7mvLE#0$7;Y8 z;X`B&A+bYf%YdI?AO*n_eo()N0-f!$(cLV79YV)!VU_hn zBX%SM+qpyz3G3xS~g z$3NHycehEc?z$*zeh&Kr!sUcr6EgnhlQ`M8@t=g%Tlg~>-vIV?VTy^xvB}ZT5uaLo zVPig8pD?kwX9Z=k9lh^WcL0>PqClFaWd=|PY>T*~H&i`_91$x@okjHly$|p%OO^^^j>v61x!=bVj6szWi*cW*+cms^tOi>IOXou5OJo^1TtTL>KR=Nov*eUw3oBLw! zf9-SGQgZd5(qL|(^h<8m#_@E+9O-E*>F(+1JXPEiVduxPjr|k@4P5xPN_TU-X{G`H zQGFnu)0@ZTNCjRWt9UraIEeSTKDL-^)Kee(Og>9IPj+-3?Lte;^s}0NrNtG+rTG2v z|Mm~Q@}^kd)pZJwiCvwqio>Rz5wx+h`*Nk5UVpW@?O|IuM12&CcCSHCcg6iwbIt2s z`suPi~^TP5fWA(^P7qSNVwrIHq!akET>rTDwd^^)W* m=K4jBhUZcVnh!_1kF@vnoEDop#2^C|YjtRs`39+AP3pe^cb1O; delta 2234 zcmZuzT}%{L6h1SvyX^8ivdix-GPu=cSwvuEf!dY@Oh7G>AjSsLf)XRBfQn5tw%J7= z{B5(>p`o>H)Y?R6+e8~eQ_>e2pGI_S$RHdYkSmBRGg*`fZVH@VzB=brPO zbG~!#gxhO=cq5c$nF2mn;C}0$BFo-l1tZy3V_avd@cD@3H6Axq`0~j_m9LAf@MQql z68K<~`-9X?p0$bIf+R<2BFag)*X2O!{c@;03Bjh7g(h#I4ZM?Hv59$*2rn$r&)QOs z8exC|xFX*Jk|!@8>R{6u_S_2b5Z5B+80_q|%R>+NQl>c_U|_-SkE$F)M!B|e^(u^+ z(a(b0+`o#rCsq*oC?m;EAj(CM@-en@0V+S@U_b!jSL)NAe)8sMoXCpb&^fvRFl zUtIp^&kN6W$aUzXA=qR|s*4sF{rt$zG@G};2qTtf!6tK3op?6A+OBejvH1>&F0>^{ zvs;p->5VB8b+j-C#j1?-08?4{wW-E)%BmsZt0!;0i;z;BOLzI9?DrJIalz>^HbVhU<&%2RECr6ZT z7%8A^!i&qS6zO2d-CCBYfjCLI%xV1Q&#HXH1yLNRkQ#`W+|@-y*R>xSSsV69MG|Gi?Z$*@bCAvu!vve)`bs*q?~KbhVH3Eu z@xWV^W5*WOK$IFnu!3BgQwM>8VcKxH9{6d>1iN=1$}L9f#L6GrAv%pZHDE+=gH(^YS*J-_foup? zD5Hs8!^+KR9&MV>XJZ@gA?t`SyM>dK0KQQgoI1K0FL_)A(M7O))J-Fp6~RV%D5G}x z{zEiDdgq?-lJUc<==Xxq_fA0{$3c`PGKVt7nWlkoCRoHcmkedpkIs{l0nydSav&SQ zI#JnDyP7<~Hz>z(+M|hH0P^H?3VDjvJ<}`G0_oXD{{-nNvap!&93~o>R|kU$Q2s?t z?CmyJ0N<(ww1wv|U?**(j(=et2v3t!J|6onpI-u)i`^)#UcJXx9AIVKy`}SehN!t^6l){nW@X598zZ~+eKatsgPh%O_u+B&7ntS&b=VwPHk;+<^A65RlY zT3c9Jygiq3hy`|M00a7U2aQy;SgXs60bT;c`|hru9ldx4bvvVm3Q$~BR#c3?KYc~t zTJo+?)7!fr-Gttr*M%$kJ&(2~>f7KDZ`xgzy4prnxCCt#3Fe$wJ(?-%lXdxdy<(}u zwM5tA=S5qHxzpiF(Y1@Ei{06trP}=-eO`3)|K{N@@w@Dd^oP3N;(rh{)qD`Y&sp{_ Dia42a diff --git a/06_uart_chainloader/demo_payload_rpi4.img b/06_uart_chainloader/demo_payload_rpi4.img index 82f75d6aef373994ecde6e7c8236afcbe19e5107..9299570333f80d8105d93af4cd7fd54112b6c208 100755 GIT binary patch delta 2061 zcmZuyeP~lx6hHU9q)XcBUYjn_rnN6kU6QueVb-)+m8Pw@b=0q-xPhz{aax(37?^|o zkz{4F-DLFf3iS)tEq}-j+Ze=d^gm^cDI!=u2OIKQ8GGr3sa0wG=-avP-Ao3%aC39d zIrp63`JHp`TWFhT8(r?a15%AFUQgXoYCpDzidrMh3Ju!_Y^{-iGSeRH7Fr{2fC}e| zWN)#Q>@C3=+EO0Qg&|ss{~Okqh8r7;!fFp$P`3yb#e3{9#vJ<2WCsN|5wvgAPsP4H zKf$yE;Cm-d$4poWrRo&z2%(xE6#X>NAS8SBG(;zDFeZb1?X1{$L!LZ&Mf>I3`mtc?KU;sb{b%Pr7O|UVE6di9QX9b7qBoXDTSXnVuM%d$ z*&pr4MSo7L$;{zIgNkU6m$vF(}Rk>yTG07kz? z3*SUg5tqdB{ZMlQ_&{1mo#!^>>+P|r&uz)x{V!F7>+LY*K$#OVz0N;iicwdvX9(mN zNQ5MNnOs9gW^fj43{jX~Y=b=7uN?(BqDW7TaUd|s4o++Z>49O4YXFn8xcZQ5RxhSI z-wKk5)G|Phj(YX5Yh^k0fusj)l+nU$>es2?xoRBikPsvX)a$OsM7!02+gG6J4zL(P znZAQi7rKhqMwEFEJ>_q#g z7>N0}hE>i=Q$oCg75Qp`sXee@SW%X}lJGl+*7o&VOB)97OX?V|{%1Dw&qkY_!v zr-`EDe`Ysq!zRl40q?Cq_1#vZ=Pnx9_#)Ng?B3%A7$W8cpdxD&y9ut?7cphSt3aX% zYA)@>H>4PCK^eilkuIURy;hJJC$g|xP-ce&W$GDH2hdzdN*fYZDqr&K0SEG%aoA#1 z6CIf|i-rgAwLFPWNjA1jB4tSdnZc0+YmKS9mV4INY}U?H;SWAJ=5TQNLe+ouJzh1l z{I@!^ImrDiE1cl#L6OH%N2+S-C6~36`8r%}?O&u8DXpPi}79!}kK;#}DmZePGwXVAG+vDLLp> zXDeTh9^+>CRWQdXzQ<3MIhr`I0wD(m2KT;?nqSopuZP@K-}cs&IXF2C9~({Th&K>z z<nIeaf!oO( VzeNUspW`p&)5!PFqg|+8{SU~kbHxAv delta 2143 zcmZ8iYfKbZ6h3!m7k5GE2-`(>m+T-~c41YNF3XlSEMl#gsuVG8`T|NC!BnbZ)TB*j z(Z+(0gy|)*rD;Oz4>Fs+5<(l&KNy>)B>mx|Y8%sZ*FG|syzugy>>?FW<1ZG8D?H3>HB?-9%;=!-7R)oGbgF9R^s2wy#EB<=li5 zzn};B7FuNUauc78{3EO*&2E5!d2dY9c_NSVEtmDPaNYs%r4zTKE-VLAE9K<7L`jx_ ztPX<`fOwO78lt;xFd%~XBlBr>AHOi(`04G|i)U}g_TIQn57}37b>Wd=`v-i5#y zV2uqa4{o_vW1--6QjP7syhF zEv6)SM}p-6AvR__U9mCxgCKIwr;Q@WIa-__sB5c~S+TpCK}eU3DQR8*SLHztE{V#? za-v+X2ScAieewuaQ)*Y3{ia`ZqYc3bJ(lm0KAO`{vBFfIBvL#il028Vh5)wQ*9%2) zy+Q!`KS2_Tp-kp;V_GZtFE8L7Ut`+Ec^w;Pu4@=4Q^XBjFVuPN{Co{)sO^V%M0R05 zATY|Hv^GOP_#Hcv1Q`7jpT)Qt7^dvq3<8fNVt4u-#g+76!OHyLoGz%PHigy6Y|5(X z=LLR8HCBk#zDzF_grq0TDZ4a_rdPlyIe=&C6`~YisP4lNdD06Sb62ZC=wuDXkh)}7 zW=cTbgz`*Dmf_b{3c}P`kdwHvF8RHARILY zETA9z9{}BfN#Z#W`EWf_j5c$ah{YJFM;n~%7gz%^myzR&M3mm;IBg4pOA;tk40*R% z$r&FA)5t=GiKkcs2ShruV%jtU&9tXs9SEB-A&ZqRH$k#WGi>&F5C9g%mv4dpvLl(F|$ znC>M|k}X^i`=1y^nYG8U8fOS+N0$~Us^n1o0Jqd5M9wDhL8kA$staiz#Gt4RKc911?m{-(xWC@LxpV`G@ZLk|)9X%0Q-D%E2FOs7eOgk}IHu`|vXUI9m ztPv+;oR_cFbMnxAY!g736{+LbA&F-v5ilbfzcj9vC*hXU4$XMMNA467@?t-S+~A5c zo^dr=^7{HMV&k(FYuAc9>YADX_S;RpVT3;z%vgu4^Twiw^@@i!ExSqs-ar`bsK?a0 zEic8AIZN)|*S= @@ -2531,8 +2531,7 @@ diff -uNr 13_exceptions_part2_peripheral_IRQs/kernel/src/memory/mmu/mapping_reco + ) -> Option<&mut MappingRecordEntry> { + self.inner + .iter_mut() -+ .filter(|x| x.is_some()) -+ .map(|x| x.as_mut().unwrap()) ++ .filter_map(|x| x.as_mut()) + .filter(|x| x.attribute_fields.mem_attributes == MemAttributes::Device) + .find(|x| { + if x.phys_start_addr != phys_region.start_addr() { @@ -2859,13 +2858,13 @@ diff -uNr 13_exceptions_part2_peripheral_IRQs/kernel/src/memory/mmu/types.rs 14_ +//-------------------------------------------------------------------------------------------------- + +/// A wrapper type around [Address] that ensures page alignment. -+#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] ++#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] +pub struct PageAddress { + inner: Address, +} + +/// A type that describes a region of memory in quantities of pages. -+#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] ++#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] +pub struct MemoryRegion { + start: PageAddress, + end_exclusive: PageAddress, @@ -2873,7 +2872,7 @@ diff -uNr 13_exceptions_part2_peripheral_IRQs/kernel/src/memory/mmu/types.rs 14_ + +/// Architecture agnostic memory attributes. +#[allow(missing_docs)] -+#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] ++#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] +pub enum MemAttributes { + CacheableDRAM, + Device, @@ -2881,7 +2880,7 @@ diff -uNr 13_exceptions_part2_peripheral_IRQs/kernel/src/memory/mmu/types.rs 14_ + +/// Architecture agnostic access permissions. +#[allow(missing_docs)] -+#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] ++#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] +pub enum AccessPermissions { + ReadOnly, + ReadWrite, @@ -2889,7 +2888,7 @@ diff -uNr 13_exceptions_part2_peripheral_IRQs/kernel/src/memory/mmu/types.rs 14_ + +/// Collection of memory attributes. +#[allow(missing_docs)] -+#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] ++#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] +pub struct AttributeFields { + pub mem_attributes: MemAttributes, + pub acc_perms: AccessPermissions, diff --git a/14_virtual_mem_part2_mmio_remap/kernel/src/exception.rs b/14_virtual_mem_part2_mmio_remap/kernel/src/exception.rs index f4af8144..7ea7cd80 100644 --- a/14_virtual_mem_part2_mmio_remap/kernel/src/exception.rs +++ b/14_virtual_mem_part2_mmio_remap/kernel/src/exception.rs @@ -21,7 +21,7 @@ pub use arch_exception::{current_privilege_level, handling_init}; /// Kernel privilege levels. #[allow(missing_docs)] -#[derive(PartialEq)] +#[derive(Eq, PartialEq)] pub enum PrivilegeLevel { User, Kernel, diff --git a/14_virtual_mem_part2_mmio_remap/kernel/src/memory/mmu/mapping_record.rs b/14_virtual_mem_part2_mmio_remap/kernel/src/memory/mmu/mapping_record.rs index 5bc32445..b893fee3 100644 --- a/14_virtual_mem_part2_mmio_remap/kernel/src/memory/mmu/mapping_record.rs +++ b/14_virtual_mem_part2_mmio_remap/kernel/src/memory/mmu/mapping_record.rs @@ -103,8 +103,7 @@ impl MappingRecord { ) -> Option<&mut MappingRecordEntry> { self.inner .iter_mut() - .filter(|x| x.is_some()) - .map(|x| x.as_mut().unwrap()) + .filter_map(|x| x.as_mut()) .filter(|x| x.attribute_fields.mem_attributes == MemAttributes::Device) .find(|x| { if x.phys_start_addr != phys_region.start_addr() { diff --git a/14_virtual_mem_part2_mmio_remap/kernel/src/memory/mmu/types.rs b/14_virtual_mem_part2_mmio_remap/kernel/src/memory/mmu/types.rs index 7a4fb071..362438fd 100644 --- a/14_virtual_mem_part2_mmio_remap/kernel/src/memory/mmu/types.rs +++ b/14_virtual_mem_part2_mmio_remap/kernel/src/memory/mmu/types.rs @@ -15,13 +15,13 @@ use core::{convert::From, iter::Step, num::NonZeroUsize, ops::Range}; //-------------------------------------------------------------------------------------------------- /// A wrapper type around [Address] that ensures page alignment. -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub struct PageAddress { inner: Address, } /// A type that describes a region of memory in quantities of pages. -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub struct MemoryRegion { start: PageAddress, end_exclusive: PageAddress, @@ -29,7 +29,7 @@ pub struct MemoryRegion { /// Architecture agnostic memory attributes. #[allow(missing_docs)] -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub enum MemAttributes { CacheableDRAM, Device, @@ -37,7 +37,7 @@ pub enum MemAttributes { /// Architecture agnostic access permissions. #[allow(missing_docs)] -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub enum AccessPermissions { ReadOnly, ReadWrite, @@ -45,7 +45,7 @@ pub enum AccessPermissions { /// Collection of memory attributes. #[allow(missing_docs)] -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub struct AttributeFields { pub mem_attributes: MemAttributes, pub acc_perms: AccessPermissions, diff --git a/15_virtual_mem_part3_precomputed_tables/Cargo.lock b/15_virtual_mem_part3_precomputed_tables/Cargo.lock index 8aa6b75d..72cc4866 100644 --- a/15_virtual_mem_part3_precomputed_tables/Cargo.lock +++ b/15_virtual_mem_part3_precomputed_tables/Cargo.lock @@ -24,9 +24,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.40" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" dependencies = [ "unicode-ident", ] @@ -39,18 +39,18 @@ checksum = "9ff023245bfcc73fb890e1f8d5383825b3131cc920020a5c487d6f113dfc428a" [[package]] name = "quote" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" dependencies = [ "proc-macro2", ] [[package]] name = "syn" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" dependencies = [ "proc-macro2", "quote", @@ -79,6 +79,6 @@ checksum = "4ee8fba06c1f4d0b396ef61a54530bb6b28f0dc61c38bc8bc5a5a48161e6282e" [[package]] name = "unicode-ident" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c" +checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" diff --git a/15_virtual_mem_part3_precomputed_tables/README.md b/15_virtual_mem_part3_precomputed_tables/README.md index 40f72ba7..25c26c0a 100644 --- a/15_virtual_mem_part3_precomputed_tables/README.md +++ b/15_virtual_mem_part3_precomputed_tables/README.md @@ -1454,7 +1454,7 @@ diff -uNr 14_virtual_mem_part2_mmio_remap/kernel/src/memory/mmu/translation_tabl + let mut tables = MinSizeTranslationTable::new_for_runtime(); - tables.init(); -+ assert!(tables.init().is_ok()); ++ assert_eq!(tables.init(), Ok(())); let virt_start_page_addr: PageAddress = PageAddress::from(0); let virt_end_exclusive_page_addr: PageAddress = diff --git a/15_virtual_mem_part3_precomputed_tables/kernel/src/exception.rs b/15_virtual_mem_part3_precomputed_tables/kernel/src/exception.rs index f4af8144..7ea7cd80 100644 --- a/15_virtual_mem_part3_precomputed_tables/kernel/src/exception.rs +++ b/15_virtual_mem_part3_precomputed_tables/kernel/src/exception.rs @@ -21,7 +21,7 @@ pub use arch_exception::{current_privilege_level, handling_init}; /// Kernel privilege levels. #[allow(missing_docs)] -#[derive(PartialEq)] +#[derive(Eq, PartialEq)] pub enum PrivilegeLevel { User, Kernel, diff --git a/15_virtual_mem_part3_precomputed_tables/kernel/src/memory/mmu/mapping_record.rs b/15_virtual_mem_part3_precomputed_tables/kernel/src/memory/mmu/mapping_record.rs index 5bc32445..b893fee3 100644 --- a/15_virtual_mem_part3_precomputed_tables/kernel/src/memory/mmu/mapping_record.rs +++ b/15_virtual_mem_part3_precomputed_tables/kernel/src/memory/mmu/mapping_record.rs @@ -103,8 +103,7 @@ impl MappingRecord { ) -> Option<&mut MappingRecordEntry> { self.inner .iter_mut() - .filter(|x| x.is_some()) - .map(|x| x.as_mut().unwrap()) + .filter_map(|x| x.as_mut()) .filter(|x| x.attribute_fields.mem_attributes == MemAttributes::Device) .find(|x| { if x.phys_start_addr != phys_region.start_addr() { diff --git a/15_virtual_mem_part3_precomputed_tables/kernel/src/memory/mmu/translation_table.rs b/15_virtual_mem_part3_precomputed_tables/kernel/src/memory/mmu/translation_table.rs index 5a34a1e6..c36fb3d6 100644 --- a/15_virtual_mem_part3_precomputed_tables/kernel/src/memory/mmu/translation_table.rs +++ b/15_virtual_mem_part3_precomputed_tables/kernel/src/memory/mmu/translation_table.rs @@ -97,7 +97,7 @@ mod tests { // This will occupy a lot of space on the stack. let mut tables = MinSizeTranslationTable::new_for_runtime(); - assert!(tables.init().is_ok()); + assert_eq!(tables.init(), Ok(())); let virt_start_page_addr: PageAddress = PageAddress::from(0); let virt_end_exclusive_page_addr: PageAddress = diff --git a/15_virtual_mem_part3_precomputed_tables/kernel/src/memory/mmu/types.rs b/15_virtual_mem_part3_precomputed_tables/kernel/src/memory/mmu/types.rs index 7a4fb071..362438fd 100644 --- a/15_virtual_mem_part3_precomputed_tables/kernel/src/memory/mmu/types.rs +++ b/15_virtual_mem_part3_precomputed_tables/kernel/src/memory/mmu/types.rs @@ -15,13 +15,13 @@ use core::{convert::From, iter::Step, num::NonZeroUsize, ops::Range}; //-------------------------------------------------------------------------------------------------- /// A wrapper type around [Address] that ensures page alignment. -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub struct PageAddress { inner: Address, } /// A type that describes a region of memory in quantities of pages. -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub struct MemoryRegion { start: PageAddress, end_exclusive: PageAddress, @@ -29,7 +29,7 @@ pub struct MemoryRegion { /// Architecture agnostic memory attributes. #[allow(missing_docs)] -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub enum MemAttributes { CacheableDRAM, Device, @@ -37,7 +37,7 @@ pub enum MemAttributes { /// Architecture agnostic access permissions. #[allow(missing_docs)] -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub enum AccessPermissions { ReadOnly, ReadWrite, @@ -45,7 +45,7 @@ pub enum AccessPermissions { /// Collection of memory attributes. #[allow(missing_docs)] -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub struct AttributeFields { pub mem_attributes: MemAttributes, pub acc_perms: AccessPermissions, diff --git a/16_virtual_mem_part4_higher_half_kernel/Cargo.lock b/16_virtual_mem_part4_higher_half_kernel/Cargo.lock index 66ac8733..ac4f39a2 100644 --- a/16_virtual_mem_part4_higher_half_kernel/Cargo.lock +++ b/16_virtual_mem_part4_higher_half_kernel/Cargo.lock @@ -24,9 +24,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.40" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" dependencies = [ "unicode-ident", ] @@ -39,18 +39,18 @@ checksum = "9ff023245bfcc73fb890e1f8d5383825b3131cc920020a5c487d6f113dfc428a" [[package]] name = "quote" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" dependencies = [ "proc-macro2", ] [[package]] name = "syn" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" dependencies = [ "proc-macro2", "quote", @@ -79,6 +79,6 @@ checksum = "4ee8fba06c1f4d0b396ef61a54530bb6b28f0dc61c38bc8bc5a5a48161e6282e" [[package]] name = "unicode-ident" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c" +checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" diff --git a/16_virtual_mem_part4_higher_half_kernel/README.md b/16_virtual_mem_part4_higher_half_kernel/README.md index cb50cab0..443c7223 100644 --- a/16_virtual_mem_part4_higher_half_kernel/README.md +++ b/16_virtual_mem_part4_higher_half_kernel/README.md @@ -749,7 +749,7 @@ diff -uNr 15_virtual_mem_part3_precomputed_tables/kernel/src/memory/mmu/translat +++ 16_virtual_mem_part4_higher_half_kernel/kernel/src/memory/mmu/translation_table.rs @@ -99,9 +99,9 @@ - assert!(tables.init().is_ok()); + assert_eq!(tables.init(), Ok(())); - let virt_start_page_addr: PageAddress = PageAddress::from(0); - let virt_end_exclusive_page_addr: PageAddress = diff --git a/16_virtual_mem_part4_higher_half_kernel/kernel/src/exception.rs b/16_virtual_mem_part4_higher_half_kernel/kernel/src/exception.rs index f4af8144..7ea7cd80 100644 --- a/16_virtual_mem_part4_higher_half_kernel/kernel/src/exception.rs +++ b/16_virtual_mem_part4_higher_half_kernel/kernel/src/exception.rs @@ -21,7 +21,7 @@ pub use arch_exception::{current_privilege_level, handling_init}; /// Kernel privilege levels. #[allow(missing_docs)] -#[derive(PartialEq)] +#[derive(Eq, PartialEq)] pub enum PrivilegeLevel { User, Kernel, diff --git a/16_virtual_mem_part4_higher_half_kernel/kernel/src/memory/mmu/mapping_record.rs b/16_virtual_mem_part4_higher_half_kernel/kernel/src/memory/mmu/mapping_record.rs index 5bc32445..b893fee3 100644 --- a/16_virtual_mem_part4_higher_half_kernel/kernel/src/memory/mmu/mapping_record.rs +++ b/16_virtual_mem_part4_higher_half_kernel/kernel/src/memory/mmu/mapping_record.rs @@ -103,8 +103,7 @@ impl MappingRecord { ) -> Option<&mut MappingRecordEntry> { self.inner .iter_mut() - .filter(|x| x.is_some()) - .map(|x| x.as_mut().unwrap()) + .filter_map(|x| x.as_mut()) .filter(|x| x.attribute_fields.mem_attributes == MemAttributes::Device) .find(|x| { if x.phys_start_addr != phys_region.start_addr() { diff --git a/16_virtual_mem_part4_higher_half_kernel/kernel/src/memory/mmu/translation_table.rs b/16_virtual_mem_part4_higher_half_kernel/kernel/src/memory/mmu/translation_table.rs index 9d627f97..9301bb0c 100644 --- a/16_virtual_mem_part4_higher_half_kernel/kernel/src/memory/mmu/translation_table.rs +++ b/16_virtual_mem_part4_higher_half_kernel/kernel/src/memory/mmu/translation_table.rs @@ -97,7 +97,7 @@ mod tests { // This will occupy a lot of space on the stack. let mut tables = MinSizeTranslationTable::new_for_runtime(); - assert!(tables.init().is_ok()); + assert_eq!(tables.init(), Ok(())); let virt_end_exclusive_page_addr: PageAddress = PageAddress::MAX; let virt_start_page_addr: PageAddress = diff --git a/16_virtual_mem_part4_higher_half_kernel/kernel/src/memory/mmu/types.rs b/16_virtual_mem_part4_higher_half_kernel/kernel/src/memory/mmu/types.rs index 85c852b3..62f3926e 100644 --- a/16_virtual_mem_part4_higher_half_kernel/kernel/src/memory/mmu/types.rs +++ b/16_virtual_mem_part4_higher_half_kernel/kernel/src/memory/mmu/types.rs @@ -15,13 +15,13 @@ use core::{convert::From, iter::Step, num::NonZeroUsize, ops::Range}; //-------------------------------------------------------------------------------------------------- /// A wrapper type around [Address] that ensures page alignment. -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub struct PageAddress { inner: Address, } /// A type that describes a region of memory in quantities of pages. -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub struct MemoryRegion { start: PageAddress, end_exclusive: PageAddress, @@ -29,7 +29,7 @@ pub struct MemoryRegion { /// Architecture agnostic memory attributes. #[allow(missing_docs)] -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub enum MemAttributes { CacheableDRAM, Device, @@ -37,7 +37,7 @@ pub enum MemAttributes { /// Architecture agnostic access permissions. #[allow(missing_docs)] -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub enum AccessPermissions { ReadOnly, ReadWrite, @@ -45,7 +45,7 @@ pub enum AccessPermissions { /// Collection of memory attributes. #[allow(missing_docs)] -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub struct AttributeFields { pub mem_attributes: MemAttributes, pub acc_perms: AccessPermissions, diff --git a/17_kernel_symbols/Cargo.lock b/17_kernel_symbols/Cargo.lock index a0da4e21..cd3793ed 100644 --- a/17_kernel_symbols/Cargo.lock +++ b/17_kernel_symbols/Cargo.lock @@ -36,9 +36,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.40" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" dependencies = [ "unicode-ident", ] @@ -51,18 +51,18 @@ checksum = "9ff023245bfcc73fb890e1f8d5383825b3131cc920020a5c487d6f113dfc428a" [[package]] name = "quote" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" dependencies = [ "proc-macro2", ] [[package]] name = "syn" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" dependencies = [ "proc-macro2", "quote", @@ -91,6 +91,6 @@ checksum = "4ee8fba06c1f4d0b396ef61a54530bb6b28f0dc61c38bc8bc5a5a48161e6282e" [[package]] name = "unicode-ident" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c" +checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" diff --git a/17_kernel_symbols/README.md b/17_kernel_symbols/README.md index b9d21aec..ace1ed6e 100644 --- a/17_kernel_symbols/README.md +++ b/17_kernel_symbols/README.md @@ -183,13 +183,9 @@ Lookup is done by just iterating over the slice: ```rust /// Retrieve the symbol corresponding to a virtual address, if any. pub fn lookup_symbol(addr: Address) -> Option<&'static Symbol> { - for i in kernel_symbols_slice() { - if i.contains(addr.as_usize()) { - return Some(i); - } - } - - None + kernel_symbols_slice() + .iter() + .find(|&i| i.contains(addr.as_usize())) } ``` @@ -342,7 +338,7 @@ diff -uNr 16_virtual_mem_part4_higher_half_kernel/kernel/src/lib.rs 17_kernel_sy diff -uNr 16_virtual_mem_part4_higher_half_kernel/kernel/src/symbols.rs 17_kernel_symbols/kernel/src/symbols.rs --- 16_virtual_mem_part4_higher_half_kernel/kernel/src/symbols.rs +++ 17_kernel_symbols/kernel/src/symbols.rs -@@ -0,0 +1,87 @@ +@@ -0,0 +1,83 @@ +// SPDX-License-Identifier: MIT OR Apache-2.0 +// +// Copyright (c) 2022 Andre Richter @@ -394,13 +390,9 @@ diff -uNr 16_virtual_mem_part4_higher_half_kernel/kernel/src/symbols.rs 17_kerne + +/// Retrieve the symbol corresponding to a virtual address, if any. +pub fn lookup_symbol(addr: Address) -> Option<&'static Symbol> { -+ for i in kernel_symbols_slice() { -+ if i.contains(addr.as_usize()) { -+ return Some(i); -+ } -+ } -+ -+ None ++ kernel_symbols_slice() ++ .iter() ++ .find(|&i| i.contains(addr.as_usize())) +} + +//-------------------------------------------------------------------------------------------------- diff --git a/17_kernel_symbols/kernel/src/exception.rs b/17_kernel_symbols/kernel/src/exception.rs index f4af8144..7ea7cd80 100644 --- a/17_kernel_symbols/kernel/src/exception.rs +++ b/17_kernel_symbols/kernel/src/exception.rs @@ -21,7 +21,7 @@ pub use arch_exception::{current_privilege_level, handling_init}; /// Kernel privilege levels. #[allow(missing_docs)] -#[derive(PartialEq)] +#[derive(Eq, PartialEq)] pub enum PrivilegeLevel { User, Kernel, diff --git a/17_kernel_symbols/kernel/src/memory/mmu/mapping_record.rs b/17_kernel_symbols/kernel/src/memory/mmu/mapping_record.rs index 5bc32445..b893fee3 100644 --- a/17_kernel_symbols/kernel/src/memory/mmu/mapping_record.rs +++ b/17_kernel_symbols/kernel/src/memory/mmu/mapping_record.rs @@ -103,8 +103,7 @@ impl MappingRecord { ) -> Option<&mut MappingRecordEntry> { self.inner .iter_mut() - .filter(|x| x.is_some()) - .map(|x| x.as_mut().unwrap()) + .filter_map(|x| x.as_mut()) .filter(|x| x.attribute_fields.mem_attributes == MemAttributes::Device) .find(|x| { if x.phys_start_addr != phys_region.start_addr() { diff --git a/17_kernel_symbols/kernel/src/memory/mmu/translation_table.rs b/17_kernel_symbols/kernel/src/memory/mmu/translation_table.rs index 9d627f97..9301bb0c 100644 --- a/17_kernel_symbols/kernel/src/memory/mmu/translation_table.rs +++ b/17_kernel_symbols/kernel/src/memory/mmu/translation_table.rs @@ -97,7 +97,7 @@ mod tests { // This will occupy a lot of space on the stack. let mut tables = MinSizeTranslationTable::new_for_runtime(); - assert!(tables.init().is_ok()); + assert_eq!(tables.init(), Ok(())); let virt_end_exclusive_page_addr: PageAddress = PageAddress::MAX; let virt_start_page_addr: PageAddress = diff --git a/17_kernel_symbols/kernel/src/memory/mmu/types.rs b/17_kernel_symbols/kernel/src/memory/mmu/types.rs index 85c852b3..62f3926e 100644 --- a/17_kernel_symbols/kernel/src/memory/mmu/types.rs +++ b/17_kernel_symbols/kernel/src/memory/mmu/types.rs @@ -15,13 +15,13 @@ use core::{convert::From, iter::Step, num::NonZeroUsize, ops::Range}; //-------------------------------------------------------------------------------------------------- /// A wrapper type around [Address] that ensures page alignment. -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub struct PageAddress { inner: Address, } /// A type that describes a region of memory in quantities of pages. -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub struct MemoryRegion { start: PageAddress, end_exclusive: PageAddress, @@ -29,7 +29,7 @@ pub struct MemoryRegion { /// Architecture agnostic memory attributes. #[allow(missing_docs)] -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub enum MemAttributes { CacheableDRAM, Device, @@ -37,7 +37,7 @@ pub enum MemAttributes { /// Architecture agnostic access permissions. #[allow(missing_docs)] -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub enum AccessPermissions { ReadOnly, ReadWrite, @@ -45,7 +45,7 @@ pub enum AccessPermissions { /// Collection of memory attributes. #[allow(missing_docs)] -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub struct AttributeFields { pub mem_attributes: MemAttributes, pub acc_perms: AccessPermissions, diff --git a/17_kernel_symbols/kernel/src/symbols.rs b/17_kernel_symbols/kernel/src/symbols.rs index 22001389..7f439ce2 100644 --- a/17_kernel_symbols/kernel/src/symbols.rs +++ b/17_kernel_symbols/kernel/src/symbols.rs @@ -49,13 +49,9 @@ fn kernel_symbols_slice() -> &'static [Symbol] { /// Retrieve the symbol corresponding to a virtual address, if any. pub fn lookup_symbol(addr: Address) -> Option<&'static Symbol> { - for i in kernel_symbols_slice() { - if i.contains(addr.as_usize()) { - return Some(i); - } - } - - None + kernel_symbols_slice() + .iter() + .find(|&i| i.contains(addr.as_usize())) } //-------------------------------------------------------------------------------------------------- diff --git a/18_backtrace/Cargo.lock b/18_backtrace/Cargo.lock index e0ab66b1..3e5338e8 100644 --- a/18_backtrace/Cargo.lock +++ b/18_backtrace/Cargo.lock @@ -36,9 +36,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.40" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" dependencies = [ "unicode-ident", ] @@ -51,18 +51,18 @@ checksum = "9ff023245bfcc73fb890e1f8d5383825b3131cc920020a5c487d6f113dfc428a" [[package]] name = "quote" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" dependencies = [ "proc-macro2", ] [[package]] name = "syn" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" dependencies = [ "proc-macro2", "quote", @@ -91,6 +91,6 @@ checksum = "4ee8fba06c1f4d0b396ef61a54530bb6b28f0dc61c38bc8bc5a5a48161e6282e" [[package]] name = "unicode-ident" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c" +checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" diff --git a/18_backtrace/kernel/src/exception.rs b/18_backtrace/kernel/src/exception.rs index f4af8144..7ea7cd80 100644 --- a/18_backtrace/kernel/src/exception.rs +++ b/18_backtrace/kernel/src/exception.rs @@ -21,7 +21,7 @@ pub use arch_exception::{current_privilege_level, handling_init}; /// Kernel privilege levels. #[allow(missing_docs)] -#[derive(PartialEq)] +#[derive(Eq, PartialEq)] pub enum PrivilegeLevel { User, Kernel, diff --git a/18_backtrace/kernel/src/memory/mmu/mapping_record.rs b/18_backtrace/kernel/src/memory/mmu/mapping_record.rs index 5bc32445..b893fee3 100644 --- a/18_backtrace/kernel/src/memory/mmu/mapping_record.rs +++ b/18_backtrace/kernel/src/memory/mmu/mapping_record.rs @@ -103,8 +103,7 @@ impl MappingRecord { ) -> Option<&mut MappingRecordEntry> { self.inner .iter_mut() - .filter(|x| x.is_some()) - .map(|x| x.as_mut().unwrap()) + .filter_map(|x| x.as_mut()) .filter(|x| x.attribute_fields.mem_attributes == MemAttributes::Device) .find(|x| { if x.phys_start_addr != phys_region.start_addr() { diff --git a/18_backtrace/kernel/src/memory/mmu/translation_table.rs b/18_backtrace/kernel/src/memory/mmu/translation_table.rs index 9d627f97..9301bb0c 100644 --- a/18_backtrace/kernel/src/memory/mmu/translation_table.rs +++ b/18_backtrace/kernel/src/memory/mmu/translation_table.rs @@ -97,7 +97,7 @@ mod tests { // This will occupy a lot of space on the stack. let mut tables = MinSizeTranslationTable::new_for_runtime(); - assert!(tables.init().is_ok()); + assert_eq!(tables.init(), Ok(())); let virt_end_exclusive_page_addr: PageAddress = PageAddress::MAX; let virt_start_page_addr: PageAddress = diff --git a/18_backtrace/kernel/src/memory/mmu/types.rs b/18_backtrace/kernel/src/memory/mmu/types.rs index 85c852b3..62f3926e 100644 --- a/18_backtrace/kernel/src/memory/mmu/types.rs +++ b/18_backtrace/kernel/src/memory/mmu/types.rs @@ -15,13 +15,13 @@ use core::{convert::From, iter::Step, num::NonZeroUsize, ops::Range}; //-------------------------------------------------------------------------------------------------- /// A wrapper type around [Address] that ensures page alignment. -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub struct PageAddress { inner: Address, } /// A type that describes a region of memory in quantities of pages. -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub struct MemoryRegion { start: PageAddress, end_exclusive: PageAddress, @@ -29,7 +29,7 @@ pub struct MemoryRegion { /// Architecture agnostic memory attributes. #[allow(missing_docs)] -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub enum MemAttributes { CacheableDRAM, Device, @@ -37,7 +37,7 @@ pub enum MemAttributes { /// Architecture agnostic access permissions. #[allow(missing_docs)] -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub enum AccessPermissions { ReadOnly, ReadWrite, @@ -45,7 +45,7 @@ pub enum AccessPermissions { /// Collection of memory attributes. #[allow(missing_docs)] -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub struct AttributeFields { pub mem_attributes: MemAttributes, pub acc_perms: AccessPermissions, diff --git a/18_backtrace/kernel/src/symbols.rs b/18_backtrace/kernel/src/symbols.rs index 22001389..7f439ce2 100644 --- a/18_backtrace/kernel/src/symbols.rs +++ b/18_backtrace/kernel/src/symbols.rs @@ -49,13 +49,9 @@ fn kernel_symbols_slice() -> &'static [Symbol] { /// Retrieve the symbol corresponding to a virtual address, if any. pub fn lookup_symbol(addr: Address) -> Option<&'static Symbol> { - for i in kernel_symbols_slice() { - if i.contains(addr.as_usize()) { - return Some(i); - } - } - - None + kernel_symbols_slice() + .iter() + .find(|&i| i.contains(addr.as_usize())) } //-------------------------------------------------------------------------------------------------- diff --git a/19_kernel_heap/Cargo.lock b/19_kernel_heap/Cargo.lock index 09f99f4a..1739c78b 100644 --- a/19_kernel_heap/Cargo.lock +++ b/19_kernel_heap/Cargo.lock @@ -24,9 +24,9 @@ dependencies = [ [[package]] name = "linked_list_allocator" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222d00bf23b303e0c82c7a4d5f04dc90f33a58b26a3adb1a09c6fbcf56cbd2a9" +checksum = "636c3bc929db632724303109c88d5d559a2a60f62243bb041387f03fa081d94a" [[package]] name = "mingo" @@ -43,9 +43,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.40" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" dependencies = [ "unicode-ident", ] @@ -58,18 +58,18 @@ checksum = "9ff023245bfcc73fb890e1f8d5383825b3131cc920020a5c487d6f113dfc428a" [[package]] name = "quote" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" dependencies = [ "proc-macro2", ] [[package]] name = "syn" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" dependencies = [ "proc-macro2", "quote", @@ -98,6 +98,6 @@ checksum = "4ee8fba06c1f4d0b396ef61a54530bb6b28f0dc61c38bc8bc5a5a48161e6282e" [[package]] name = "unicode-ident" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c" +checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" diff --git a/19_kernel_heap/README.md b/19_kernel_heap/README.md index 45f5f9e3..ecb3f8f7 100644 --- a/19_kernel_heap/README.md +++ b/19_kernel_heap/README.md @@ -1090,7 +1090,7 @@ diff -uNr 18_backtrace/kernel/src/memory/mmu/mapping_record.rs 19_kernel_heap/ke phys_start_addr: phys_region.start_addr(), virt_start_addr: virt_region.start_addr(), num_pages: phys_region.num_pages(), -@@ -56,55 +56,28 @@ +@@ -56,54 +56,28 @@ } } @@ -1146,12 +1146,11 @@ diff -uNr 18_backtrace/kernel/src/memory/mmu/mapping_record.rs 19_kernel_heap/ke ) -> Option<&mut MappingRecordEntry> { self.inner .iter_mut() -- .filter(|x| x.is_some()) -- .map(|x| x.as_mut().unwrap()) +- .filter_map(|x| x.as_mut()) .filter(|x| x.attribute_fields.mem_attributes == MemAttributes::Device) .find(|x| { if x.phys_start_addr != phys_region.start_addr() { -@@ -125,10 +98,8 @@ +@@ -124,10 +98,8 @@ virt_region: &MemoryRegion, phys_region: &MemoryRegion, attr: &AttributeFields, @@ -1164,7 +1163,7 @@ diff -uNr 18_backtrace/kernel/src/memory/mmu/mapping_record.rs 19_kernel_heap/ke name, virt_region, phys_region, -@@ -136,8 +107,6 @@ +@@ -135,8 +107,6 @@ )); self.sort(); @@ -1173,7 +1172,7 @@ diff -uNr 18_backtrace/kernel/src/memory/mmu/mapping_record.rs 19_kernel_heap/ke } pub fn print(&self) { -@@ -148,7 +117,7 @@ +@@ -147,7 +117,7 @@ ); info!(" -------------------------------------------------------------------------------------------------------------------------------------------"); @@ -1182,7 +1181,7 @@ diff -uNr 18_backtrace/kernel/src/memory/mmu/mapping_record.rs 19_kernel_heap/ke let size = i.num_pages * bsp::memory::mmu::KernelGranule::SIZE; let virt_start = i.virt_start_addr; let virt_end_inclusive = virt_start + (size - 1); -@@ -184,16 +153,14 @@ +@@ -183,16 +153,14 @@ attr, acc_p, xn, @@ -1203,7 +1202,7 @@ diff -uNr 18_backtrace/kernel/src/memory/mmu/mapping_record.rs 19_kernel_heap/ke } } -@@ -212,7 +179,7 @@ +@@ -211,7 +179,7 @@ virt_region: &MemoryRegion, phys_region: &MemoryRegion, attr: &AttributeFields, @@ -1212,7 +1211,7 @@ diff -uNr 18_backtrace/kernel/src/memory/mmu/mapping_record.rs 19_kernel_heap/ke KERNEL_MAPPING_RECORD.write(|mr| mr.add(name, virt_region, phys_region, attr)) } -@@ -225,9 +192,7 @@ +@@ -224,9 +192,7 @@ KERNEL_MAPPING_RECORD.write(|mr| { let dup = mr.find_duplicate(&phys_region)?; diff --git a/19_kernel_heap/kernel/src/exception.rs b/19_kernel_heap/kernel/src/exception.rs index f4af8144..7ea7cd80 100644 --- a/19_kernel_heap/kernel/src/exception.rs +++ b/19_kernel_heap/kernel/src/exception.rs @@ -21,7 +21,7 @@ pub use arch_exception::{current_privilege_level, handling_init}; /// Kernel privilege levels. #[allow(missing_docs)] -#[derive(PartialEq)] +#[derive(Eq, PartialEq)] pub enum PrivilegeLevel { User, Kernel, diff --git a/19_kernel_heap/kernel/src/memory/mmu/translation_table.rs b/19_kernel_heap/kernel/src/memory/mmu/translation_table.rs index 9d627f97..9301bb0c 100644 --- a/19_kernel_heap/kernel/src/memory/mmu/translation_table.rs +++ b/19_kernel_heap/kernel/src/memory/mmu/translation_table.rs @@ -97,7 +97,7 @@ mod tests { // This will occupy a lot of space on the stack. let mut tables = MinSizeTranslationTable::new_for_runtime(); - assert!(tables.init().is_ok()); + assert_eq!(tables.init(), Ok(())); let virt_end_exclusive_page_addr: PageAddress = PageAddress::MAX; let virt_start_page_addr: PageAddress = diff --git a/19_kernel_heap/kernel/src/memory/mmu/types.rs b/19_kernel_heap/kernel/src/memory/mmu/types.rs index 85c852b3..62f3926e 100644 --- a/19_kernel_heap/kernel/src/memory/mmu/types.rs +++ b/19_kernel_heap/kernel/src/memory/mmu/types.rs @@ -15,13 +15,13 @@ use core::{convert::From, iter::Step, num::NonZeroUsize, ops::Range}; //-------------------------------------------------------------------------------------------------- /// A wrapper type around [Address] that ensures page alignment. -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub struct PageAddress { inner: Address, } /// A type that describes a region of memory in quantities of pages. -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub struct MemoryRegion { start: PageAddress, end_exclusive: PageAddress, @@ -29,7 +29,7 @@ pub struct MemoryRegion { /// Architecture agnostic memory attributes. #[allow(missing_docs)] -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub enum MemAttributes { CacheableDRAM, Device, @@ -37,7 +37,7 @@ pub enum MemAttributes { /// Architecture agnostic access permissions. #[allow(missing_docs)] -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub enum AccessPermissions { ReadOnly, ReadWrite, @@ -45,7 +45,7 @@ pub enum AccessPermissions { /// Collection of memory attributes. #[allow(missing_docs)] -#[derive(Copy, Clone, Debug, PartialOrd, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialOrd, PartialEq)] pub struct AttributeFields { pub mem_attributes: MemAttributes, pub acc_perms: AccessPermissions, diff --git a/19_kernel_heap/kernel/src/symbols.rs b/19_kernel_heap/kernel/src/symbols.rs index 22001389..7f439ce2 100644 --- a/19_kernel_heap/kernel/src/symbols.rs +++ b/19_kernel_heap/kernel/src/symbols.rs @@ -49,13 +49,9 @@ fn kernel_symbols_slice() -> &'static [Symbol] { /// Retrieve the symbol corresponding to a virtual address, if any. pub fn lookup_symbol(addr: Address) -> Option<&'static Symbol> { - for i in kernel_symbols_slice() { - if i.contains(addr.as_usize()) { - return Some(i); - } - } - - None + kernel_symbols_slice() + .iter() + .find(|&i| i.contains(addr.as_usize())) } //-------------------------------------------------------------------------------------------------- diff --git a/X1_JTAG_boot/jtag_boot_rpi3.img b/X1_JTAG_boot/jtag_boot_rpi3.img index 4f2c13b0dc1a7ab85bbd5dcc18f7810c00c8b275..0c43ac469d8e20830ad0043edcbda3c99edc87e8 100755 GIT binary patch delta 2116 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 Q!;cu(YYq7l`_eb}U+(9V@Bjb+ diff --git a/X1_JTAG_boot/jtag_boot_rpi4.img b/X1_JTAG_boot/jtag_boot_rpi4.img index ee1f6fc4c545edda38bc7b5ccb60381b0ebb4ad2..83c4176a7b375931bf248cd0bf1b840093ffbed2 100755 GIT binary patch delta 1644 zcmah}Z%k8H6hHU9*7cQ&4_f(G7_WdU#Ufw@Bu*({rc51O!7P4Qa4|aZ4|A|(Cd<|~ zCW1;9UM>r9#sqW;zGh37RI;%T3!7QQEm?vLlO@JIFfI@L6E%ET!{F`Q*VhkQmh2>_ z_ug|(&pE%}Iqk^H>bAjr;R%Sv5uO~sVC}MOt@FxrjpeP} z*18-3m+)dVY!{>93{+nzJFpOd1_$0Z?sNqF{xt!*m;6aXoXcKng&~&J^F^YY%ORZl zIX%mF9=-w7Hh`}LR9jP}?2AdV+D8<%6l84-lyZoMwX4vu-2y`rNWV_a0Q{B=%(m2>FS|vde>WKAAO9(FEc`>4dVN z>rXWvWZ!6mtZpRAVhb4lQS_^45VY5-u=w(Ox-kSFUC4Gv8voLV8GHt9j)%C)bMblJ z7T>j^=SotuLI4J@AXT1`GMQf+Odf>dJAlG6O;$rSA<;0SNky1*sO--CI?qk7Zi6IV z2SKWrMXUn^#@Y8q+Cf~>^vO2Gk3G=;GrlqO^W=>ymx)Y&bsf zO-}~qJ?^PD^7#Gqh|5d-^b=P}gcM-9t3;l^0dn7}J{%-a+lj?=UC(7jqk+`&Hg5*e z!$-phFord)V*C+A!|n`uTJ$rP>6H&5x%!5vEVX4R43H4}prH$3OFFL)nH6I74Zk$+mK2M(cwKm3PJi7|+`7N0zjRpy(01qD3;4g8z8TRM;%D>eO{jDdAaaEXqH||(L7(4qWQ^+Ni)VTV|)kW+2C^Sm1KoA zIB~%e4If+Y3RGBO!iF{h;$h(dOr$q4HIHEODQ`oZnf8$TpZ<0#=iL=q zmR+INHm_eg(baueq9^m+S=;kdp*d!Xc6u?tn4G2)`E8zb8l0RV?Pl6^xe@9sxLLWB zoyySLbExW6PgnPQn|gX#_*6m4o`xx+%}Os9m2yuD=nq9Z=%BkM;+GD+bK?Dz-ICpo zGlu`G*kN{1$qJyd0#iw#aX_H&3aHbxT Vc}^9j-XZgxG|$sTHo9E2;cr-I;{X5v delta 1666 zcmah}Z){Ul6hHUfmh^Q4-`cWKYS}9b**dyTHm#i~E6ijYNSKwW#KaEfAI6_48!Cxl zyO2mGeCXpYAwo!hN`#J&+1oV1{5GE;p3gpEt0UV>0R|R*v7AAPGD;KIj4_yS0DK|ha%>DM!M=c^ z9V4n%0g65hY89m7`Z;LGQ5cXx{*nKuqxATd(Y8&_~?#&xP znyDC3XAEObr=SF<8We3UQD>XLw10zk?I;4Pw5!~|9g35z~CB%E{)|np!`~a0fPz?i|ZkWdK%=YB4I2baFJ(` z+d-PcwrcGwhAe*r5z;9-f^#S1&gpFl{S?_;7)tO>~nXyBaFo( zkQdpcdrRb#BZhPfq1?`ba;p|hID3CLq}#PbZ9Ou6#yR?aJaghwPZ1WhHxM=BglgFH zo=Q@~-t(+Z_W3Z}IigIDfpTooI29xCSOSw7hEc|ordq6#-P8YUl!Zv`}ymX%YLP4Zk$f$trFAq=;*r z1((+*qYGQEir5Pkd*Q7ReRWv+JtX%BgmWMF2UwZB5)N+73dXu0yNGfz% zZ-$(HgO~)2?=vKQn5ep2Fm?4B*9B`9?;Gsq^3};d49SVD+Kim(!%Iw)qZ*{yB;;oJ zTdXWL@AMEzkS*xX8481yrjZvz|k%YOs8srR`6 diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 9667a009..0a525545 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "nightly-2022-04-10" +channel = "nightly-2022-08-01" components = ["rust-src", "llvm-tools-preview", "rustfmt"] targets = ["aarch64-unknown-none-softfloat"]