18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Definitions and interface for Linux - z/VM Monitor Stream.
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Copyright IBM Corp. 2003, 2008
68c2ecf20Sopenharmony_ci *
78c2ecf20Sopenharmony_ci * Author: Gerald Schaefer <gerald.schaefer@de.ibm.com>
88c2ecf20Sopenharmony_ci */
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci#define APPLDATA_MAX_REC_SIZE	  4024	/* Maximum size of the */
118c2ecf20Sopenharmony_ci					/* data buffer */
128c2ecf20Sopenharmony_ci#define APPLDATA_MAX_PROCS 100
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci#define APPLDATA_PROC_NAME_LENGTH 16	/* Max. length of /proc name */
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci#define APPLDATA_RECORD_MEM_ID		0x01	/* IDs to identify the */
178c2ecf20Sopenharmony_ci#define APPLDATA_RECORD_OS_ID		0x02	/* individual records, */
188c2ecf20Sopenharmony_ci#define APPLDATA_RECORD_NET_SUM_ID	0x03	/* must be < 256 !     */
198c2ecf20Sopenharmony_ci#define APPLDATA_RECORD_PROC_ID		0x04
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci#define CTL_APPLDATA_TIMER 	2121	/* sysctl IDs, must be unique */
228c2ecf20Sopenharmony_ci#define CTL_APPLDATA_INTERVAL 	2122
238c2ecf20Sopenharmony_ci#define CTL_APPLDATA_MEM	2123
248c2ecf20Sopenharmony_ci#define CTL_APPLDATA_OS		2124
258c2ecf20Sopenharmony_ci#define CTL_APPLDATA_NET_SUM	2125
268c2ecf20Sopenharmony_ci#define CTL_APPLDATA_PROC	2126
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_cistruct appldata_ops {
298c2ecf20Sopenharmony_ci	struct list_head list;
308c2ecf20Sopenharmony_ci	struct ctl_table_header *sysctl_header;
318c2ecf20Sopenharmony_ci	struct ctl_table *ctl_table;
328c2ecf20Sopenharmony_ci	int    active;				/* monitoring status */
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci	/* fill in from here */
358c2ecf20Sopenharmony_ci	char name[APPLDATA_PROC_NAME_LENGTH];	/* name of /proc fs node */
368c2ecf20Sopenharmony_ci	unsigned char record_nr;		/* Record Nr. for Product ID */
378c2ecf20Sopenharmony_ci	void (*callback)(void *data);		/* callback function */
388c2ecf20Sopenharmony_ci	void *data;				/* record data */
398c2ecf20Sopenharmony_ci	unsigned int size;			/* size of record */
408c2ecf20Sopenharmony_ci	struct module *owner;			/* THIS_MODULE */
418c2ecf20Sopenharmony_ci	char mod_lvl[2];			/* modification level, EBCDIC */
428c2ecf20Sopenharmony_ci};
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ciextern int appldata_register_ops(struct appldata_ops *ops);
458c2ecf20Sopenharmony_ciextern void appldata_unregister_ops(struct appldata_ops *ops);
468c2ecf20Sopenharmony_ciextern int appldata_diag(char record_nr, u16 function, unsigned long buffer,
478c2ecf20Sopenharmony_ci			 u16 length, char *mod_lvl);
488c2ecf20Sopenharmony_ci
49