cregit-Linux how code gets into the kernel

Release 4.7 drivers/s390/char/sclp_rw.h

/*
 * interface to the SCLP-read/write driver
 *
 * Copyright IBM Corporation 1999, 2009
 *
 * Author(s): Martin Peschke <mpeschke@de.ibm.com>
 *            Martin Schwidefsky <schwidefsky@de.ibm.com>
 */

#ifndef __SCLP_RW_H__

#define __SCLP_RW_H__

#include <linux/list.h>


struct mto {
	
u16 length;
	
u16 type;
	
u16 line_type_flags;
	
u8  alarm_control;
	
u8  _reserved[3];
} __attribute__((packed));


struct go {
	
u16 length;
	
u16 type;
	
u32 domid;
	
u8  hhmmss_time[8];
	
u8  th_time[3];
	
u8  reserved_0;
	
u8  dddyyyy_date[7];
	
u8  _reserved_1;
	
u16 general_msg_flags;
	
u8  _reserved_2[10];
	
u8  originating_system_name[8];
	
u8  job_guest_name[8];
} __attribute__((packed));


struct mdb_header {
	
u16 length;
	
u16 type;
	
u32 tag;
	
u32 revision_code;
} __attribute__((packed));


struct mdb {
	
struct mdb_header header;
	
struct go go;
	
struct mto mto;
} __attribute__((packed));


struct msg_buf {
	
struct evbuf_header header;
	
struct mdb mdb;
} __attribute__((packed));

/* The number of empty mto buffers that can be contained in a single sccb. */

#define NR_EMPTY_MSG_PER_SCCB ((PAGE_SIZE - sizeof(struct sclp_buffer) - \
                        sizeof(struct sccb_header)) / sizeof(struct msg_buf))

/*
 * data structure for information about list of SCCBs (only for writing),
 * will be located at the end of a SCCBs page
 */

struct sclp_buffer {
	
struct list_head list;		/* list_head for sccb_info chain */
	
struct sclp_req request;
	
void *sccb;
	
struct msg_buf *current_msg;
	
char *current_line;
	
int current_length;
	
int retry_count;
	/* output format settings */
	
unsigned short columns;
	
unsigned short htab;
	/* statistics about this buffer */
	
unsigned int char_sum;		/* # chars in sccb */
	
unsigned int messages;		/* # messages in sccb */
	/* Callback that is called after reaching final status. */
	
void (*callback)(struct sclp_buffer *, int);
};

int sclp_rw_init(void);
struct sclp_buffer *sclp_make_buffer(void *, unsigned short, unsigned short);
void *sclp_unmake_buffer(struct sclp_buffer *);
int sclp_buffer_space(struct sclp_buffer *);
int sclp_write(struct sclp_buffer *buffer, const unsigned char *, int);
int sclp_emit_buffer(struct sclp_buffer *,void (*)(struct sclp_buffer *,int));
void sclp_set_columns(struct sclp_buffer *, unsigned short);
void sclp_set_htab(struct sclp_buffer *, unsigned short);
int sclp_chars_in_buffer(struct sclp_buffer *);

#ifdef CONFIG_SCLP_CONSOLE
void sclp_console_pm_event(enum sclp_pm_event sclp_pm_event);
#else

static inline void sclp_console_pm_event(enum sclp_pm_event sclp_pm_event) { }

Contributors

PersonTokensPropCommitsCommitProp
heiko carstensheiko carstens10100.00%1100.00%
Total10100.00%1100.00%

#endif #endif /* __SCLP_RW_H__ */

Overall Contributors

PersonTokensPropCommitsCommitProp
martin schwidefskymartin schwidefsky34792.78%350.00%
heiko carstensheiko carstens184.81%233.33%
michael holzheumichael holzheu92.41%116.67%
Total374100.00%6100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
{% endraw %}