|
发表于 2022-6-18 19:40:05
|
显示全部楼层
#include <stdio.h>
: N* Q" Y5 A g; M1 {# d: m8 G#include <unistd.h>
0 j9 T, m9 U. b9 ]3 z1 v4 f/ t% v* }; e" ~#include <fcntl.h>$ u( |1 r3 W" }& g1 ?
#include <errno.h>% C+ r/ I c0 M% k' }
#include <sys/ioctl.h>6 Y( A a. M2 n' |; `2 q
# z1 E, S' M( O. z" X3 j
#define IOCMD_LOCK 0xC0204D01
4 u; G: n4 l* S9 w3 h! n#define IOCMD_UNLOCK 0xC0204D024 l& o+ E# H& t4 s
+ }2 I+ V% B- q D- ]7 M% fvoid usage(const char* app)
; Q+ E* s2 d+ l2 {. u{
- A' [1 w8 _9 P% V# Z% }2 m3 z) R printf("%s -l <mtd name> ... lock mtd\n", app);% v% S/ t" `7 s( C9 u
printf("%s -u <mtd name> ... unlock mtd\n", app);0 p1 } ]) @* @9 i% s |
}
5 r: S1 L8 f, ?/ |: C/ l5 ?: N- A3 f/ }' A$ k
int main(int argc, char* argv[])
, T. ^' F& B2 o( X2 N$ x1 O{& T. k/ @; F/ R% I( z3 }
const char* file = "/proc/wap_proc/mtd_protect";; p* j3 E( d+ e% H/ R
int fd, r;
, l4 l; |4 b a# C/ h unsigned long cmd = IOCMD_UNLOCK;! L: V; t E2 S4 ~* S! |
5 P9 U7 D: j$ ?1 J/ b if(argc < 3)/ R: B) q1 m: Z7 V- a' X" R% j
{4 [7 ]8 i* _" ^$ b" y. l) T. N3 H
usage(argv[0]);
0 H N( E. B4 |; e2 J( e! x return 1;
! f, d4 C& j4 \, C/ N( B6 s }
v, T1 c) `$ x if('-' == argv[1][0])
9 ~/ r) C3 z' M2 J% R: e/ R {
9 A& c+ s7 d1 K; F& r if('l' == argv[1][1])
) k) K5 J1 E, l$ }) ]/ \5 {) s) q cmd = IOCMD_LOCK;
8 v! c! H4 m7 N( l+ T else if('u' != argv[1][1])
1 o; g) O) j& ?2 n4 O5 y {usage(argv[0]); return 1;}
* a! ]% z! g; w" K- T }: L) m9 i- b8 U( X: L( I7 i
else" s2 ]* {5 |+ S$ Z- a1 p1 ]
{
- B0 U" C& @! E5 B; W1 g& q4 _$ ]5 L usage(argv[0]);
8 U& q( R: Y- m0 ^ return 1;
# O' x; M* h4 b9 _* N* |7 k }) @2 {' @% V/ h0 }6 H ]
fd = open(file, O_RDWR);9 t6 J- J. V$ k7 g$ f
if(fd < 0)& N9 J! D+ Y" D$ W- q* g
{
8 X# x" K; v" g5 M5 t printf("Can not open: %s\n", file); @9 t7 S/ [* e0 ^) n d
return 1;
5 Y3 P) D A5 q' c3 A }
n4 _2 o! u, B# y3 I0 e+ ~ r = ioctl(fd, cmd, argv[2]);8 Y ]7 ]: K$ V) F/ m
close(fd);
' Y& r1 e; q8 z0 b( o7 ? W" h' [& ` printf("%s '%s' %s. errno:%u\n",
& f7 Q# T4 Q& ~0 }" } (IOCMD_UNLOCK == cmd ? "Unlock" : "Lock"),; Q" d& F( v. Z$ e( z
argv[2], (r < 0 ? "failed" : "success"), errno);/ b- P: t% ~, e/ R2 o, e& s7 h
return 0;, x5 t7 T1 ]1 o7 N
}
% d U5 g2 F. | L" g& `' |
! g% m$ [0 x- [2 r# r) `
8 z) W4 c) Q; j7 p; \
: E+ n7 e: X7 Q% o$ a& U. W |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|