162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Definitions and interface for Linux - z/VM Monitor Stream.
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright IBM Corp. 2003, 2008
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Author: Gerald Schaefer <gerald.schaefer@de.ibm.com>
862306a36Sopenharmony_ci */
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#define APPLDATA_MAX_REC_SIZE	  4024	/* Maximum size of the */
1162306a36Sopenharmony_ci					/* data buffer */
1262306a36Sopenharmony_ci#define APPLDATA_MAX_PROCS 100
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#define APPLDATA_PROC_NAME_LENGTH 16	/* Max. length of /proc name */
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#define APPLDATA_RECORD_MEM_ID		0x01	/* IDs to identify the */
1762306a36Sopenharmony_ci#define APPLDATA_RECORD_OS_ID		0x02	/* individual records, */
1862306a36Sopenharmony_ci#define APPLDATA_RECORD_NET_SUM_ID	0x03	/* must be < 256 !     */
1962306a36Sopenharmony_ci#define APPLDATA_RECORD_PROC_ID		0x04
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci#define CTL_APPLDATA_TIMER 	2121	/* sysctl IDs, must be unique */
2262306a36Sopenharmony_ci#define CTL_APPLDATA_INTERVAL 	2122
2362306a36Sopenharmony_ci#define CTL_APPLDATA_MEM	2123
2462306a36Sopenharmony_ci#define CTL_APPLDATA_OS		2124
2562306a36Sopenharmony_ci#define CTL_APPLDATA_NET_SUM	2125
2662306a36Sopenharmony_ci#define CTL_APPLDATA_PROC	2126
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_cistruct appldata_ops {
2962306a36Sopenharmony_ci	struct list_head list;
3062306a36Sopenharmony_ci	struct ctl_table_header *sysctl_header;
3162306a36Sopenharmony_ci	struct ctl_table *ctl_table;
3262306a36Sopenharmony_ci	int    active;				/* monitoring status */
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci	/* fill in from here */
3562306a36Sopenharmony_ci	char name[APPLDATA_PROC_NAME_LENGTH];	/* name of /proc fs node */
3662306a36Sopenharmony_ci	unsigned char record_nr;		/* Record Nr. for Product ID */
3762306a36Sopenharmony_ci	void (*callback)(void *data);		/* callback function */
3862306a36Sopenharmony_ci	void *data;				/* record data */
3962306a36Sopenharmony_ci	unsigned int size;			/* size of record */
4062306a36Sopenharmony_ci	struct module *owner;			/* THIS_MODULE */
4162306a36Sopenharmony_ci	char mod_lvl[2];			/* modification level, EBCDIC */
4262306a36Sopenharmony_ci};
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ciextern int appldata_register_ops(struct appldata_ops *ops);
4562306a36Sopenharmony_ciextern void appldata_unregister_ops(struct appldata_ops *ops);
4662306a36Sopenharmony_ciextern int appldata_diag(char record_nr, u16 function, unsigned long buffer,
4762306a36Sopenharmony_ci			 u16 length, char *mod_lvl);
4862306a36Sopenharmony_ci
49