Suse 10.1 ядро 2.6.16.13-4. хочу прочитать из /dev/kmem делаю это следующим образом: #include <stdio.h> #include <sys/types.h> #include <errno.h> #include <stdlib.h> #include <fcntl.h> #define KMEM_FILE "/dev/kmem"
static inline int rkml(int fd, uint offset, ulong *buf) { unsigned i; i=lseek(fd,offset,SEEK_SET); printf("lseek errno:%d\n",errno); printf("lseek:%d\n",i); i=read(fd, buf, sizeof(ulong)); printf("read errno:%d\n",errno); printf("readed bytes:%d\n",i); return i; }
int main() { int kmem=0; ulong l_seek=0xс00323c0; uint fl=0; ulong *buf=NULL; buf=malloc(1*sizeof(ulong)); kmem = open(KMEM_FILE,O_RDWR); if (kmem < 0) return 1; fl =rkml(kmem,l_seek,buf); printf ("readed 0x%x \n",*buf); free(buf); close(kmem); return 0; }
И в пезультате ничего не читается, read возвращает EINVAL. Это какая то особенность Suse? раньше,на ядре 2.6.6 в Mandrake все работало. подскажите,как читать из kmem