Linux Audio

Check our new training course

Loading...
v5.9
  1/*
  2 * linux/include/kmsg_dump.h
  3 *
  4 * Copyright (C) 2009 Net Insight AB
  5 *
  6 * Author: Simon Kagstrom <simon.kagstrom@netinsight.net>
  7 *
  8 * This file is subject to the terms and conditions of the GNU General Public
  9 * License.  See the file COPYING in the main directory of this archive
 10 * for more details.
 11 */
 12#ifndef _LINUX_KMSG_DUMP_H
 13#define _LINUX_KMSG_DUMP_H
 14
 15#include <linux/errno.h>
 16#include <linux/list.h>
 17
 18/*
 19 * Keep this list arranged in rough order of priority. Anything listed after
 20 * KMSG_DUMP_OOPS will not be logged by default unless printk.always_kmsg_dump
 21 * is passed to the kernel.
 22 */
 23enum kmsg_dump_reason {
 24	KMSG_DUMP_UNDEF,
 25	KMSG_DUMP_PANIC,
 26	KMSG_DUMP_OOPS,
 27	KMSG_DUMP_EMERG,
 28	KMSG_DUMP_SHUTDOWN,
 29	KMSG_DUMP_MAX
 
 30};
 31
 32/**
 33 * struct kmsg_dumper - kernel crash message dumper structure
 34 * @list:	Entry in the dumper list (private)
 35 * @dump:	Call into dumping code which will retrieve the data with
 36 * 		through the record iterator
 37 * @max_reason:	filter for highest reason number that should be dumped
 38 * @registered:	Flag that specifies if this is already registered
 39 */
 40struct kmsg_dumper {
 41	struct list_head list;
 42	void (*dump)(struct kmsg_dumper *dumper, enum kmsg_dump_reason reason);
 43	enum kmsg_dump_reason max_reason;
 44	bool active;
 45	bool registered;
 46
 47	/* private state of the kmsg iterator */
 48	u32 cur_idx;
 49	u32 next_idx;
 50	u64 cur_seq;
 51	u64 next_seq;
 52};
 53
 54#ifdef CONFIG_PRINTK
 55void kmsg_dump(enum kmsg_dump_reason reason);
 56
 57bool kmsg_dump_get_line_nolock(struct kmsg_dumper *dumper, bool syslog,
 58			       char *line, size_t size, size_t *len);
 59
 60bool kmsg_dump_get_line(struct kmsg_dumper *dumper, bool syslog,
 61			char *line, size_t size, size_t *len);
 62
 63bool kmsg_dump_get_buffer(struct kmsg_dumper *dumper, bool syslog,
 64			  char *buf, size_t size, size_t *len);
 65
 66void kmsg_dump_rewind_nolock(struct kmsg_dumper *dumper);
 67
 68void kmsg_dump_rewind(struct kmsg_dumper *dumper);
 69
 70int kmsg_dump_register(struct kmsg_dumper *dumper);
 71
 72int kmsg_dump_unregister(struct kmsg_dumper *dumper);
 73
 74const char *kmsg_dump_reason_str(enum kmsg_dump_reason reason);
 75#else
 76static inline void kmsg_dump(enum kmsg_dump_reason reason)
 77{
 78}
 79
 80static inline bool kmsg_dump_get_line_nolock(struct kmsg_dumper *dumper,
 81					     bool syslog, const char *line,
 82					     size_t size, size_t *len)
 83{
 84	return false;
 85}
 86
 87static inline bool kmsg_dump_get_line(struct kmsg_dumper *dumper, bool syslog,
 88				const char *line, size_t size, size_t *len)
 89{
 90	return false;
 91}
 92
 93static inline bool kmsg_dump_get_buffer(struct kmsg_dumper *dumper, bool syslog,
 94					char *buf, size_t size, size_t *len)
 95{
 96	return false;
 97}
 98
 99static inline void kmsg_dump_rewind_nolock(struct kmsg_dumper *dumper)
100{
101}
102
103static inline void kmsg_dump_rewind(struct kmsg_dumper *dumper)
104{
105}
106
107static inline int kmsg_dump_register(struct kmsg_dumper *dumper)
108{
109	return -EINVAL;
110}
111
112static inline int kmsg_dump_unregister(struct kmsg_dumper *dumper)
113{
114	return -EINVAL;
115}
116
117static inline const char *kmsg_dump_reason_str(enum kmsg_dump_reason reason)
118{
119	return "Disabled";
120}
121#endif
122
123#endif /* _LINUX_KMSG_DUMP_H */
v4.17
  1/*
  2 * linux/include/kmsg_dump.h
  3 *
  4 * Copyright (C) 2009 Net Insight AB
  5 *
  6 * Author: Simon Kagstrom <simon.kagstrom@netinsight.net>
  7 *
  8 * This file is subject to the terms and conditions of the GNU General Public
  9 * License.  See the file COPYING in the main directory of this archive
 10 * for more details.
 11 */
 12#ifndef _LINUX_KMSG_DUMP_H
 13#define _LINUX_KMSG_DUMP_H
 14
 15#include <linux/errno.h>
 16#include <linux/list.h>
 17
 18/*
 19 * Keep this list arranged in rough order of priority. Anything listed after
 20 * KMSG_DUMP_OOPS will not be logged by default unless printk.always_kmsg_dump
 21 * is passed to the kernel.
 22 */
 23enum kmsg_dump_reason {
 24	KMSG_DUMP_UNDEF,
 25	KMSG_DUMP_PANIC,
 26	KMSG_DUMP_OOPS,
 27	KMSG_DUMP_EMERG,
 28	KMSG_DUMP_RESTART,
 29	KMSG_DUMP_HALT,
 30	KMSG_DUMP_POWEROFF,
 31};
 32
 33/**
 34 * struct kmsg_dumper - kernel crash message dumper structure
 35 * @list:	Entry in the dumper list (private)
 36 * @dump:	Call into dumping code which will retrieve the data with
 37 * 		through the record iterator
 38 * @max_reason:	filter for highest reason number that should be dumped
 39 * @registered:	Flag that specifies if this is already registered
 40 */
 41struct kmsg_dumper {
 42	struct list_head list;
 43	void (*dump)(struct kmsg_dumper *dumper, enum kmsg_dump_reason reason);
 44	enum kmsg_dump_reason max_reason;
 45	bool active;
 46	bool registered;
 47
 48	/* private state of the kmsg iterator */
 49	u32 cur_idx;
 50	u32 next_idx;
 51	u64 cur_seq;
 52	u64 next_seq;
 53};
 54
 55#ifdef CONFIG_PRINTK
 56void kmsg_dump(enum kmsg_dump_reason reason);
 57
 58bool kmsg_dump_get_line_nolock(struct kmsg_dumper *dumper, bool syslog,
 59			       char *line, size_t size, size_t *len);
 60
 61bool kmsg_dump_get_line(struct kmsg_dumper *dumper, bool syslog,
 62			char *line, size_t size, size_t *len);
 63
 64bool kmsg_dump_get_buffer(struct kmsg_dumper *dumper, bool syslog,
 65			  char *buf, size_t size, size_t *len);
 66
 67void kmsg_dump_rewind_nolock(struct kmsg_dumper *dumper);
 68
 69void kmsg_dump_rewind(struct kmsg_dumper *dumper);
 70
 71int kmsg_dump_register(struct kmsg_dumper *dumper);
 72
 73int kmsg_dump_unregister(struct kmsg_dumper *dumper);
 
 
 74#else
 75static inline void kmsg_dump(enum kmsg_dump_reason reason)
 76{
 77}
 78
 79static inline bool kmsg_dump_get_line_nolock(struct kmsg_dumper *dumper,
 80					     bool syslog, const char *line,
 81					     size_t size, size_t *len)
 82{
 83	return false;
 84}
 85
 86static inline bool kmsg_dump_get_line(struct kmsg_dumper *dumper, bool syslog,
 87				const char *line, size_t size, size_t *len)
 88{
 89	return false;
 90}
 91
 92static inline bool kmsg_dump_get_buffer(struct kmsg_dumper *dumper, bool syslog,
 93					char *buf, size_t size, size_t *len)
 94{
 95	return false;
 96}
 97
 98static inline void kmsg_dump_rewind_nolock(struct kmsg_dumper *dumper)
 99{
100}
101
102static inline void kmsg_dump_rewind(struct kmsg_dumper *dumper)
103{
104}
105
106static inline int kmsg_dump_register(struct kmsg_dumper *dumper)
107{
108	return -EINVAL;
109}
110
111static inline int kmsg_dump_unregister(struct kmsg_dumper *dumper)
112{
113	return -EINVAL;
 
 
 
 
 
114}
115#endif
116
117#endif /* _LINUX_KMSG_DUMP_H */