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