3
3
#include <strings.h>
4
4
#include <string.h>
5
5
#include <kfifo.h>
6
+ #include <sys/types.h>
7
+ #include <sys/stat.h>
8
+ #include <fcntl.h>
9
+ #include <stdlib.h>
10
+ #include <sys/mman.h>
11
+ #include <unistd.h>
6
12
7
13
#define FIFO_LENGTH 4096
8
- #define ORG_TEST
9
14
10
15
struct ll_param {
11
16
struct kfifo * fifo ;
@@ -25,7 +30,7 @@ void thread_reader(void *param)
25
30
26
31
for (;;) {
27
32
bzero (buffer , FIFO_LENGTH );
28
- read_len = kfifo_get (p -> fifo , buffer , 25 );
33
+ read_len = kfifo_get (p -> fifo , buffer , 32 );
29
34
if (read_len != 0 ) {
30
35
printf ("Read len:%d, buffer is :< %s >n\n" , read_len ,
31
36
buffer );
@@ -42,22 +47,42 @@ void thread_reader(void *param)
42
47
#ifdef ORG_TEST
43
48
void thread_writer (void * param )
44
49
{
45
- unsigned int write_len = 0 ;
46
50
unsigned int counter = 0 ;
47
51
unsigned char buffer [32 ];
48
52
struct ll_param * p = (struct ll_param * )param ;
49
53
50
54
for (counter = 0 ; counter < 100 ; counter ++ ) {
51
55
bzero (buffer , 32 );
52
56
sprintf ((char * )buffer , "This is %d message.n" , counter );
53
- write_len = kfifo_put (p -> fifo , buffer , 25 ); //strlen((char *)buffer)
57
+ kfifo_put (p -> fifo , buffer , 32 ); //strlen((char *)buffer)
54
58
usleep (100 );
55
59
}
56
60
}
57
61
#else
58
62
void thread_writer (void * param )
59
63
{
64
+ #define PAGE_SIZE (4*1024)
65
+ #define PAGE_OFFSET 0xc0000000
66
+ #define KERNEL_VIRT_ADDR 0x2249c000 //此处地址即为内核模块打印的地址p,动态的不固定,需要自行修改
67
+ unsigned char * buffer ;
68
+ int fd ;
69
+ unsigned long phy_addr ;
70
+ struct ll_param * p = (struct ll_param * )param ;
71
+
72
+ fd = open ("/dev/mem" , O_RDWR );
73
+ if (fd == -1 )
74
+ perror ("open" );
75
+
76
+ phy_addr = KERNEL_VIRT_ADDR ;
77
+ buffer = mmap (0 , PAGE_SIZE , PROT_READ | PROT_WRITE , MAP_SHARED , fd , phy_addr );
78
+ if (buffer == MAP_FAILED )
79
+ perror ("mmap" );
80
+ while (1 ) {
81
+ kfifo_put (p -> fifo , buffer , 32 ); //strlen((char *)buffer)
82
+ }
60
83
84
+ munmap (buffer , PAGE_SIZE );
85
+ close (fd );
61
86
}
62
87
#endif
63
88
0 commit comments