|
发表于 2022-6-18 19:40:05
|
显示全部楼层
#include <stdio.h>6 n: F* W0 O* i( X
#include <unistd.h>+ C! J+ P0 V5 w
#include <fcntl.h>
% s1 G; R% t& i#include <errno.h>' T0 n0 d1 m/ R! \/ h0 i* m
#include <sys/ioctl.h>
5 ^$ e% m# G7 C, A1 }2 V
! y, e) J- o* D' \5 @#define IOCMD_LOCK 0xC0204D017 ^7 b6 [8 h4 r) @9 k
#define IOCMD_UNLOCK 0xC0204D028 \+ t; I* E% F1 Q4 ^% A; x# x' F
) f$ y0 ^% \+ b( R9 j1 |! Svoid usage(const char* app)4 Z$ r; f' s& \5 \ f0 G, [
{7 z) y4 Y( X! j4 c5 d5 f5 Z
printf("%s -l <mtd name> ... lock mtd\n", app);+ g7 G0 |' H6 M0 {0 I4 f
printf("%s -u <mtd name> ... unlock mtd\n", app);* I6 A1 N; T. {2 v6 |
}5 D* f5 M1 T9 \8 w2 t
4 e8 c0 f- r5 t% T% W, vint main(int argc, char* argv[])- l6 S# e+ d B6 H% o- I. w
{
4 i8 f+ z6 h/ I, T const char* file = "/proc/wap_proc/mtd_protect"; M0 _: _% K+ J, [- N$ M
int fd, r;
8 e4 F0 R& B3 ?5 H8 r unsigned long cmd = IOCMD_UNLOCK;
7 H+ L3 N) E7 N# f
9 `9 a/ L. P/ ?- J* z" |# K if(argc < 3)
+ A* `& e+ Q& D, D* Q5 k& l5 M* U' Y {
! N. Q# r6 U) K" a3 e& E usage(argv[0]);
/ c: [: _# C7 N9 w& R/ e6 u return 1;* a* C* ]% F" z4 h! A/ Y; T+ R
}
5 P0 N8 e9 B' q# T* a8 ?" k! C8 m if('-' == argv[1][0])
! d9 D$ R3 [1 h6 H {3 ^" \" ^9 W& P- A2 K2 y
if('l' == argv[1][1])6 d/ O# e' `: U& |
cmd = IOCMD_LOCK;
4 B/ U: x* C* ^$ B+ K else if('u' != argv[1][1])
7 V, m( M8 B; h$ q4 d/ { {usage(argv[0]); return 1;}
+ ?2 j# Z( k& S5 h }
( Q. [& X0 ]+ y else/ y$ ~" h% q$ V; f& j9 T% p% E
{; t5 q0 F" `6 U* k& D( d$ i! {
usage(argv[0]);4 X+ A: n# Q" h2 M
return 1;$ g E( @5 U L
}
& j$ p" Y- t1 U fd = open(file, O_RDWR);
0 q9 u" q0 G. i: G! { if(fd < 0)
. V- F$ z/ Q+ Z+ G# Q5 [8 _% A {* o$ O0 f% L. [5 ~! m0 e
printf("Can not open: %s\n", file);
9 Z) j8 O) H* ?8 n return 1; P; B! y: L- M7 ~" T; T4 e% E
}$ u i. g7 E3 [' |3 j
r = ioctl(fd, cmd, argv[2]);
' h7 c' X$ n. B close(fd);
( g" U5 G* ?% R# H" Z! W, t printf("%s '%s' %s. errno:%u\n", 1 ^7 c: x' y% M+ W( ?0 l2 G
(IOCMD_UNLOCK == cmd ? "Unlock" : "Lock"),
2 Y' [* U, c: A# b, \ argv[2], (r < 0 ? "failed" : "success"), errno);; D/ _2 M4 b: A4 P" K5 e3 B) I
return 0;+ {4 Q( r0 B5 [' F5 Q3 @
}
1 ?, d+ s$ I" Y1 R8 o E1 L: _5 t! @8 g3 z( G4 [
8 e; b _: \! i
' R3 b& @2 d" m9 Y! D, _4 O |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|