mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
The zfcpdump kernel is built without module support. Furthermore the initrd doesn't contain modprobe. So trying to load modules using modprobe in zfcpdump userspace doesn't really make sense. Signed-off-by: Philipp Rudo <prudo@linux.ibm.com> Reviewed-by: Steffen Maier <maier@linux.ibm.com> Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
112 lines
2.5 KiB
C
112 lines
2.5 KiB
C
/*
|
|
* zfcpdump - Write /proc/vmcore to SCSI partition
|
|
*
|
|
* Copyright IBM Corp. 2003, 2017
|
|
*
|
|
* s390-tools is free software; you can redistribute it and/or modify
|
|
* it under the terms of the MIT license. See LICENSE for details.
|
|
*/
|
|
|
|
#ifndef ZFCPDUMP_H
|
|
#define ZFCPDUMP_H
|
|
|
|
#include <signal.h>
|
|
#include <stdint.h>
|
|
#include <stdio.h>
|
|
|
|
#define ZFCPDUMP_VERSION "3.0"
|
|
|
|
#define PRINT_TRACE(x...) \
|
|
do { \
|
|
if (g.parm_debug >= 3) { \
|
|
fprintf(stderr, "TRACE: "); \
|
|
fprintf(stderr, ##x); \
|
|
} \
|
|
} while (0)
|
|
|
|
#define PRINT_ERR(x...) \
|
|
do { \
|
|
fprintf(stderr, "ERROR: "); \
|
|
fprintf(stderr, ##x); \
|
|
} while (0)
|
|
|
|
#define PRINT_WARN(x...) \
|
|
do { \
|
|
fprintf(stderr, "WARNING: "); \
|
|
fprintf(stderr, ##x); \
|
|
} while (0)
|
|
|
|
#define PRINT_PERR(x...) \
|
|
do { \
|
|
fprintf(stderr, "ERROR: "); \
|
|
fprintf(stderr, ##x); \
|
|
perror(""); \
|
|
} while (0)
|
|
|
|
#define PRINT(x...) fprintf(stdout, ##x)
|
|
#define CMDLINE_MAX_LEN 1024
|
|
#define KERN_PARM_MAX 100
|
|
|
|
#define DUMP_FLAGS (O_CREAT | O_RDWR | O_TRUNC | O_DIRECT)
|
|
#define DUMP_MODE (S_IRUSR | S_IWUSR | S_IRGRP)
|
|
|
|
#define MIB (1024ULL * 1024)
|
|
#define TO_MIB(x) ((x + (MIB / 2)) / MIB)
|
|
|
|
struct globals {
|
|
int parm_debug;
|
|
char parmline[CMDLINE_MAX_LEN];
|
|
struct sigaction sigact;
|
|
char dump_devno[16];
|
|
char dump_wwpn[32];
|
|
char dump_lun[32];
|
|
char dump_bootprog[32];
|
|
char start_time_str[128];
|
|
struct timeval start_time;
|
|
unsigned long vmcore_size;
|
|
};
|
|
|
|
extern struct globals g;
|
|
|
|
#define PROC_CMDLINE "/proc/cmdline"
|
|
#define DEV_ZCORE "/sys/kernel/debug/zcore/mem"
|
|
#define DEV_ZCORE_MAP "/sys/kernel/debug/zcore/memmap"
|
|
#define DEV_ZCORE_REIPL "/sys/kernel/debug/zcore/reipl"
|
|
#define DEV_ZCORE_HSA "/sys/kernel/debug/zcore/hsa"
|
|
#define REIPL "1"
|
|
#define DEV_SCSI "/dev/sda"
|
|
|
|
#define IPL_WWPN "/sys/firmware/ipl/wwpn"
|
|
#define IPL_DEVNO "/sys/firmware/ipl/device"
|
|
#define IPL_LUN "/sys/firmware/ipl/lun"
|
|
|
|
#define PARM_DEBUG "dump_debug"
|
|
#define PARM_DEBUG_DFLT 2
|
|
#define PARM_DEBUG_MIN 1
|
|
#define PARM_DEBUG_MAX 6
|
|
|
|
#define WAIT_TIME_END 3 /* seconds */
|
|
#define WAIT_TIME_ONLINE 2 /* seconds */
|
|
|
|
#define PAGE_SIZE 4096
|
|
|
|
#define CHUNK_INFO_SIZE 34 /* 2 16-byte char, each followed by blank */
|
|
|
|
struct mem_chunk {
|
|
__u64 addr; /* Start address of this memory chunk */
|
|
__u64 size; /* Length of this memory chunk */
|
|
struct mem_chunk *next; /* Pointer to next memory chunk */
|
|
};
|
|
|
|
/*
|
|
* Function prototypes
|
|
*/
|
|
void release_hsa(void);
|
|
__u64 get_hsa_size(void);
|
|
int zfcpdump_init(void);
|
|
void print_newline(void);
|
|
void show_progress(unsigned long done);
|
|
int terminate(int rc);
|
|
|
|
#endif /* ZFCPDUMP_H */
|