|
发表于 2022-6-18 19:40:05
|
显示全部楼层
#include <stdio.h>
4 D4 I* A; _, C1 K2 X& i! e$ X: N#include <unistd.h>
( v; ?% B' E. E+ \4 K' |& [2 T#include <fcntl.h>
; e9 x1 i' c5 m+ N4 r E7 K) U+ i#include <errno.h>* ?, k: K. G2 ` h/ q8 ], u
#include <sys/ioctl.h>0 c8 k& m2 N3 p, Q2 J; z8 v1 g2 c
f: e- a0 G$ V- R, S! f- O" W#define IOCMD_LOCK 0xC0204D01
+ z% d) T( j" v3 ~#define IOCMD_UNLOCK 0xC0204D02
. t# T0 }/ ^, i8 U6 y, `7 \4 h k: g; I# d9 W! t
void usage(const char* app)# {' S& E" O( A# \5 `+ Z
{
0 } f8 w/ g& g' t3 x9 x, X# @: V& _) T printf("%s -l <mtd name> ... lock mtd\n", app);2 X7 i. a$ F# V% z; ~
printf("%s -u <mtd name> ... unlock mtd\n", app);6 S; K; F! [6 W' w
}
' p7 v. V8 h$ D9 D) g! W2 r, O4 z3 E. R& X4 X# v5 X* i% l
int main(int argc, char* argv[])% v4 l- c5 C* ^5 N
{
. P& }. D0 A4 [9 o6 \ const char* file = "/proc/wap_proc/mtd_protect";
" t0 @1 G2 j3 {2 p int fd, r;- ^* z( F; t" n5 Q* s
unsigned long cmd = IOCMD_UNLOCK;
# c6 e: S6 m4 r( t$ |4 u1 U' ]4 K( ]+ C4 b2 @' z
if(argc < 3)
* [, v1 Y& U# P, p4 m9 I {0 h$ d/ L# F) t- \8 l- A$ z h0 S
usage(argv[0]);+ f: e/ l' k; K- s W: e+ }
return 1;
/ e, c2 k4 n7 }; X* K( M/ z }, T3 v8 m+ U! R' N
if('-' == argv[1][0])6 I) y7 X% `8 \( t3 R5 ^) m9 w" Z
{3 g8 ]3 `8 T5 @/ p8 D
if('l' == argv[1][1])2 D5 a9 L3 ^9 E, o$ v* t
cmd = IOCMD_LOCK;$ d0 X/ `5 V Z" q
else if('u' != argv[1][1])* ^% Q9 a+ a8 Y" o* M5 F' J! L
{usage(argv[0]); return 1;}2 C( t K/ G4 J) P7 o8 o
}
: H0 \( o; a: O5 I* I2 e else0 T+ ^ N; T8 A2 d& I5 m
{- ?. u, u: R; R# F6 m
usage(argv[0]);
7 R: e" V& m) S9 `; o' Z3 ?7 r return 1;5 g0 V0 X6 E) l4 A
}8 `- g- p& J# l; G: {: q
fd = open(file, O_RDWR);$ ]4 C4 F- ~% W+ q2 A
if(fd < 0)% ?4 n! l8 E! J" U6 l/ x
{! W, Y1 S2 m5 }. b% \# q
printf("Can not open: %s\n", file);1 z5 V6 ]! _& G" B S
return 1;
( u# _. a r. D) V2 K5 P0 ?5 F }
. z7 k; P/ X/ o) l1 J r = ioctl(fd, cmd, argv[2]);
& z# D8 w j. N" B4 H6 J3 w2 Q) A close(fd);
/ A' }9 B; A" [* I8 ?- {9 Y printf("%s '%s' %s. errno:%u\n",
+ Q8 P3 f$ E) d1 N! \ (IOCMD_UNLOCK == cmd ? "Unlock" : "Lock"),6 V' R# v: i0 |( `# } R
argv[2], (r < 0 ? "failed" : "success"), errno);
9 i- d' J. v: S; o return 0;' Z# M' U% s/ @& r6 L/ A/ _
}
" w+ Z1 f8 V/ ~8 x5 y& p: i/ S
6 F$ }5 _2 P+ g# M! S K5 [+ g; G; N1 R$ V% e8 V) q
% P+ s9 H# \$ u' j* Y |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|