mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
Debian carried a patch forever that allowed zipl to run even if not all menu items had files attached. If a required file is missing for an entry (e.g. vmlinuz.old or initrd.img.old) and it is marked as "optional" in the config, the section will be skipped. This allows zipl to install after bootstrapping, as booting on s390 still relies on the kernel/initrd symlinks in the root directory. Closes: https://github.com/ibm-s390-linux/s390-tools/pull/2 Signed-off-by: Philipp Kern <pkern@debian.org> Reviewed-by: Peter Oberparleiter <oberpar@linux.ibm.com> [sth@linux.ibm.com: adapted patches to latest changes, merged patches] Signed-off-by: Stefan Haberland <sth@linux.ibm.com> Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
140 lines
2.4 KiB
C
140 lines
2.4 KiB
C
/*
|
|
* s390-tools/zipl/include/job.h
|
|
* Functions and data structures representing the actual 'job' that the
|
|
* user wants us to execute.
|
|
*
|
|
* Copyright IBM Corp. 2001, 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 JOB_H
|
|
#define JOB_H
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include "disk.h"
|
|
#include "zipl.h"
|
|
|
|
|
|
enum job_id {
|
|
job_print_usage = 1,
|
|
job_print_version = 2,
|
|
job_ipl = 3,
|
|
job_segment = 4,
|
|
job_dump_partition = 5,
|
|
job_menu = 6,
|
|
job_ipl_tape = 7,
|
|
job_mvdump = 8,
|
|
};
|
|
|
|
struct job_target_data {
|
|
char* bootmap_dir;
|
|
char* targetbase;
|
|
disk_type_t targettype;
|
|
int targetcylinders;
|
|
int targetheads;
|
|
int targetsectors;
|
|
int targetblocksize;
|
|
blocknum_t targetoffset;
|
|
};
|
|
|
|
struct job_common_ipl_data {
|
|
char* image;
|
|
char* parmline;
|
|
char* ramdisk;
|
|
address_t image_addr;
|
|
address_t parm_addr;
|
|
address_t ramdisk_addr;
|
|
bool optional;
|
|
bool ignore;
|
|
};
|
|
|
|
struct job_ipl_data {
|
|
struct job_common_ipl_data common;
|
|
address_t envblk_addr;
|
|
int is_kdump;
|
|
};
|
|
|
|
struct job_envblk_data {
|
|
int size;
|
|
char *buf;
|
|
};
|
|
|
|
struct job_segment_data {
|
|
char* segment;
|
|
address_t segment_addr;
|
|
};
|
|
|
|
struct job_dump_data {
|
|
struct job_common_ipl_data common;
|
|
char* device;
|
|
uint64_t mem;
|
|
};
|
|
|
|
struct job_mvdump_data {
|
|
char* device_list;
|
|
int device_count;
|
|
char* device[MAX_DUMP_VOLUMES];
|
|
uint64_t mem;
|
|
uint8_t force;
|
|
};
|
|
|
|
struct job_ipl_tape_data {
|
|
struct job_common_ipl_data common;
|
|
char* device;
|
|
};
|
|
|
|
|
|
union job_menu_entry_data {
|
|
struct job_ipl_data ipl;
|
|
struct job_dump_data dump;
|
|
};
|
|
|
|
struct job_menu_entry {
|
|
int pos;
|
|
char* name;
|
|
enum job_id id;
|
|
union job_menu_entry_data data;
|
|
int is_secure;
|
|
};
|
|
|
|
struct job_menu_data {
|
|
int num;
|
|
int default_pos;
|
|
int prompt;
|
|
int timeout;
|
|
struct job_menu_entry* entry;
|
|
};
|
|
|
|
struct job_data {
|
|
enum job_id id;
|
|
struct job_target_data target;
|
|
struct job_envblk_data envblk;
|
|
char* name;
|
|
union {
|
|
struct job_ipl_data ipl;
|
|
struct job_menu_data menu;
|
|
struct job_segment_data segment;
|
|
struct job_dump_data dump;
|
|
struct job_ipl_tape_data ipl_tape;
|
|
struct job_mvdump_data mvdump;
|
|
} data;
|
|
int noninteractive;
|
|
int verbose;
|
|
int add_files;
|
|
int dry_run;
|
|
int command_line;
|
|
int is_secure;
|
|
};
|
|
|
|
|
|
int job_get(int argc, char* argv[], struct job_data** data);
|
|
void job_free(struct job_data* job);
|
|
int type_from_target(char *target, disk_type_t *type);
|
|
int check_job_dump_images(struct job_dump_data* dump, char* name);
|
|
|
|
#endif /* not JOB_H */
|