blob: ad1bded51de7580aae31cb3fc1e42d9e2c79d690 [file] [log] [blame]
#ifndef __BACKPORT_SEQ_FILE_H
#define __BACKPORT_SEQ_FILE_H
#include_next <linux/seq_file.h>
#include <linux/version.h>
#if LINUX_VERSION_IS_LESS(3,7,0)
#include <linux/user_namespace.h>
#include <linux/file.h>
#include <linux/fs.h>
#ifdef CONFIG_USER_NS
static inline struct user_namespace *seq_user_ns(struct seq_file *seq)
{
struct file *f = container_of((void *) seq, struct file, private_data);
return f->f_cred->user_ns;
}
#else
static inline struct user_namespace *seq_user_ns(struct seq_file *seq)
{
extern struct user_namespace init_user_ns;
return &init_user_ns;
}
#endif /* CONFIG_USER_NS */
#endif /* < 3.7 */
#if LINUX_VERSION_IS_LESS(3,19,0)
#define seq_has_overflowed LINUX_BACKPORT(seq_has_overflowed)
/**
* seq_has_overflowed - check if the buffer has overflowed
* @m: the seq_file handle
*
* seq_files have a buffer which may overflow. When this happens a larger
* buffer is reallocated and all the data will be printed again.
* The overflow state is true when m->count == m->size.
*
* Returns true if the buffer received more than it can hold.
*/
static inline bool seq_has_overflowed(struct seq_file *m)
{
return m->count == m->size;
}
#endif
#if LINUX_VERSION_IS_LESS(4,3,0)
#define seq_hex_dump LINUX_BACKPORT(seq_hex_dump)
void seq_hex_dump(struct seq_file *m, const char *prefix_str, int prefix_type,
int rowsize, int groupsize, const void *buf, size_t len,
bool ascii);
#endif
#endif /* __BACKPORT_SEQ_FILE_H */