/* * 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 #include #include #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 */