📄 peekpoke.c
字号:
/* Peek and poke using /dev/mem. * * Callers now ought to check the return values. * * Calling peek() requires read permission on /dev/mem, and consumes * a file descriptor. Calling poke() requires write permission, and * consumes another file descriptor. */#include <sys/types.h>#include <fcntl.h>#include <unistd.h>_PROTOTYPE( int peek, (unsigned segment, unsigned offset));_PROTOTYPE( int poke, (unsigned segment, unsigned offset, unsigned value));#define SEGSIZE 0x10int peek(segment, offset)unsigned segment;unsigned offset;{ unsigned char chvalue; static int infd = -1; if (infd < 0) infd = open("/dev/mem", O_RDONLY); if (infd < 0 || lseek(infd, (unsigned long) segment * SEGSIZE + offset, SEEK_SET) < 0 || read(infd, (char *) &chvalue, (unsigned) 1) != 1) return(-1); return(chvalue);}int poke(segment, offset, value)unsigned segment;unsigned offset;unsigned value;{ unsigned char chvalue; static int outfd = -1; chvalue = value; if (outfd < 0) outfd = open("/dev/mem", O_WRONLY); if (outfd < 0 || lseek(outfd, (unsigned long) segment * SEGSIZE + offset, SEEK_SET) < 0 || write(outfd, (char *) &chvalue, (unsigned) 1) != 1) return(-1); return(chvalue);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -