13-01-19-->4

对文中出现的restrict关键字的认识:
  关键字restrict仅对指针有用,修饰指针,表明要修改这个指针所指向的数据区的内容,仅能通过该指针来实现,此关键字的作用是使编译器优化代码,生成更高效的汇编代码,“由restrict修饰的指针是最初唯一对指针所指向的对象进行存取的办法,仅当第二个指针基于第一个时,才能对对象进行存取.”(其实restrict同const或voliate一样是一个修饰符而已,告诉编译器被 restrict修饰的指针所指向的对象,只能通过这个指针或基于这个指针的其他指针进行操作,即限制访问用restrict限制的指针指向的对象只能通过这个指针访问,这对编译器的优化很有好处。 )

  但要注意:restrict是C99中新增的关键字,在C89和C++中都不支持,在gcc中可以通过-std=c99来得到对它的支持。


文件类型

块特殊文件:提供对设备(e.g.磁盘)带缓冲的访问,每次访问以固定长度为单位进行。

字符特殊文件: 提供对设备不带缓冲的访问,每次访问长度可变。

-->系统中的所有设备要么是字符特殊文件,要么是块特殊文件。


文件访问权限




RE5C86L1:/ # ls -la /dev/block/by-name total 0 drwxr-xr-x 2 root root 1700 2025-01-01 13:05 . drwxr-xr-x 6 root root 3960 2025-01-01 13:05 .. lrwxrwxrwx 1 root root 16 2025-01-01 13:05 audio_dsp_a -> /dev/block/sdc25 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 audio_dsp_b -> /dev/block/sdc53 lrwxrwxrwx 1 root root 16 2025-01-01 13:04 boot_a -> /dev/block/sdc36 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 boot_b -> /dev/block/sdc64 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 boot_para -> /dev/block/sdc49 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 cam_vpu1_a -> /dev/block/sdc31 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 cam_vpu1_b -> /dev/block/sdc59 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 cam_vpu2_a -> /dev/block/sdc32 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 cam_vpu2_b -> /dev/block/sdc60 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 cam_vpu3_a -> /dev/block/sdc33 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 cam_vpu3_b -> /dev/block/sdc61 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 cdt_engineering_a -> /dev/block/sdc48 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 cdt_engineering_b -> /dev/block/sdc69 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 dpm_a -> /dev/block/sdc27 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 dpm_b -> /dev/block/sdc55 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 dtbo_a -> /dev/block/sdc39 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 dtbo_b -> /dev/block/sdc67 lrwxrwxrwx 1 root root 15 2025-01-01 13:05 expdb -> /dev/block/sdc7 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 flashinfo -> /dev/block/sdc72 lrwxrwxrwx 1 root root 15 2025-01-01 13:05 frp -> /dev/block/sdc8 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 gz_a -> /dev/block/sdc34 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 gz_b -> /dev/block/sdc62 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 init_boot_a -> /dev/block/sdc38 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 init_boot_b -> /dev/block/sdc66 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 lk_a -> /dev/block/sdc35 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 lk_b -> /dev/block/sdc63 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 logo -> /dev/block/sdc50 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 mcupm_a -> /dev/block/sdc30 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 mcupm_b -> /dev/block/sdc58 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 md1img_a -> /dev/block/sdc23 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 md1img_b -> /dev/block/sdc51 lrwxrwxrwx 1 root root 16 2025-01-01 13:04 metadata -> /dev/block/sdc17 lrwxrwxrwx 1 root root 15 2025-01-01 13:05 misc -> /dev/block/sdc1 lrwxrwxrwx 1 root root 15 2025-01-01 13:05 nvcfg -> /dev/block/sdc9 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 nvdata -> /dev/block/sdc10 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 nvram -> /dev/block/sdc43 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 ocdt -> /dev/block/sdc44 lrwxrwxrwx 1 root root 15 2025-01-01 13:05 oplus_custom -> /dev/block/sdc6 lrwxrwxrwx 1 root root 15 2025-01-01 13:05 oplusreserve1 -> /dev/block/sdc3 lrwxrwxrwx 1 root root 15 2025-01-01 13:04 oplusreserve2 -> /dev/block/sdc4 lrwxrwxrwx 1 root root 15 2025-01-01 13:05 oplusreserve3 -> /dev/block/sdc5 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 oplusreserve5 -> /dev/block/sdc45 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 oplusreserve6 -> /dev/block/sdc46 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 otp -> /dev/block/sdc22 lrwxrwxrwx 1 root root 15 2025-01-01 13:05 para -> /dev/block/sdc2 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 param -> /dev/block/sdc47 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 persist -> /dev/block/sdc18 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 pi_img_a -> /dev/block/sdc26 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 pi_img_b -> /dev/block/sdc54 lrwxrwxrwx 1 root root 23 2025-01-01 13:05 preloader_a -> /dev/block/mmcblk0boot0 lrwxrwxrwx 1 root root 23 2025-01-01 13:05 preloader_b -> /dev/block/mmcblk0boot1 lrwxrwxrwx 1 root root 30 2025-01-01 13:05 preloader_emmc_a -> /dev/block/by-name/preloader_a lrwxrwxrwx 1 root root 30 2025-01-01 13:05 preloader_emmc_b -> /dev/block/by-name/preloader_b lrwxrwxrwx 1 root root 22 2025-01-01 13:05 preloader_raw_a -> /dev/block/mapper/pl_a lrwxrwxrwx 1 root root 22 2025-01-01 13:05 preloader_raw_b -> /dev/block/mapper/pl_b lrwxrwxrwx 1 root root 30 2025-01-01 13:05 preloader_ufs_a -> /dev/block/by-name/preloader_a lrwxrwxrwx 1 root root 30 2025-01-01 13:05 preloader_ufs_b -> /dev/block/by-name/preloader_b lrwxrwxrwx 1 root root 16 2025-01-01 13:05 proinfo -> /dev/block/sdc42 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 protect1 -> /dev/block/sdc19 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 protect2 -> /dev/block/sdc20 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 scp_a -> /dev/block/sdc28 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 scp_b -> /dev/block/sdc56 lrwxrwxrwx 1 root root 14 2025-01-01 13:05 sda -> /dev/block/sda lrwxrwxrwx 1 root root 14 2025-01-01 13:05 sdb -> /dev/block/sdb lrwxrwxrwx 1 root root 14 2025-01-01 13:05 sdc -> /dev/block/sdc lrwxrwxrwx 1 root root 16 2025-01-01 13:05 sec1 -> /dev/block/sdc41 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 seccfg -> /dev/block/sdc21 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 spmfw_a -> /dev/block/sdc24 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 spmfw_b -> /dev/block/sdc52 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 sspm_a -> /dev/block/sdc29 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 sspm_b -> /dev/block/sdc57 lrwxrwxrwx 1 root root 16 2025-01-01 13:04 super -> /dev/block/sdc70 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 tee_a -> /dev/block/sdc40 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 tee_b -> /dev/block/sdc68 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 userdata -> /dev/block/sdc71 lrwxrwxrwx 1 root root 16 2025-01-01 13:04 vbmeta_a -> /dev/block/sdc11 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 vbmeta_b -> /dev/block/sdc14 lrwxrwxrwx 1 root root 16 2025-01-01 13:04 vbmeta_system_a -> /dev/block/sdc12 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 vbmeta_system_b -> /dev/block/sdc15 lrwxrwxrwx 1 root root 16 2025-01-01 13:04 vbmeta_vendor_a -> /dev/block/sdc13 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 vbmeta_vendor_b -> /dev/block/sdc16 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 vendor_boot_a -> /dev/block/sdc37 lrwxrwxrwx 1 root root 16 2025-01-01 13:05 vendor_boot_b -> /dev/block/sdc65如何查看preloader_a和preloder_b的实际物理地址
最新发布
12-31
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值