Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
fs
proc
kmsg.c
Go to the documentation of this file.
1
/*
2
* linux/fs/proc/kmsg.c
3
*
4
* Copyright (C) 1992 by Linus Torvalds
5
*
6
*/
7
8
#include <linux/types.h>
9
#include <linux/errno.h>
10
#include <linux/time.h>
11
#include <linux/kernel.h>
12
#include <linux/poll.h>
13
#include <
linux/proc_fs.h
>
14
#include <linux/fs.h>
15
#include <
linux/syslog.h
>
16
17
#include <asm/uaccess.h>
18
#include <asm/io.h>
19
20
extern
wait_queue_head_t
log_wait
;
21
22
static
int
kmsg_open(
struct
inode
*
inode
,
struct
file
*
file
)
23
{
24
return
do_syslog
(
SYSLOG_ACTION_OPEN
,
NULL
, 0,
SYSLOG_FROM_FILE
);
25
}
26
27
static
int
kmsg_release(
struct
inode
*
inode
,
struct
file
*
file
)
28
{
29
(
void
)
do_syslog
(
SYSLOG_ACTION_CLOSE
,
NULL
, 0,
SYSLOG_FROM_FILE
);
30
return
0;
31
}
32
33
static
ssize_t
kmsg_read(
struct
file *file,
char
__user *
buf
,
34
size_t
count
, loff_t *ppos)
35
{
36
if
((file->
f_flags
&
O_NONBLOCK
) &&
37
!
do_syslog
(
SYSLOG_ACTION_SIZE_UNREAD
,
NULL
, 0,
SYSLOG_FROM_FILE
))
38
return
-
EAGAIN
;
39
return
do_syslog
(
SYSLOG_ACTION_READ
, buf, count,
SYSLOG_FROM_FILE
);
40
}
41
42
static
unsigned
int
kmsg_poll(
struct
file *file,
poll_table
*
wait
)
43
{
44
poll_wait(file, &log_wait, wait);
45
if
(
do_syslog
(
SYSLOG_ACTION_SIZE_UNREAD
,
NULL
, 0,
SYSLOG_FROM_FILE
))
46
return
POLLIN
|
POLLRDNORM
;
47
return
0;
48
}
49
50
51
static
const
struct
file_operations
proc_kmsg_operations = {
52
.read = kmsg_read,
53
.poll = kmsg_poll,
54
.open = kmsg_open,
55
.release = kmsg_release,
56
.llseek =
generic_file_llseek
,
57
};
58
59
static
int
__init
proc_kmsg_init(
void
)
60
{
61
proc_create(
"kmsg"
,
S_IRUSR
,
NULL
, &proc_kmsg_operations);
62
return
0;
63
}
64
module_init
(proc_kmsg_init);
Generated on Thu Jan 10 2013 14:49:43 for Linux Kernel by
1.8.2