mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
When installing a boot record for "ipl" and "menu" job, always add an environment block as a boot component located in bootmap file at offset alinged on file system block size boundary. When adding, first try to import environment from a file at location specified by newly introduced "--environment" zipl option, or by default at "/etc/ziplenv". If nothing was imported, then add a blank environment block. Optionally print the content of the environment block. Store environment block size and address (as of boot component) in stage3_parms. Change interface of add_ipl_program(): add 2 additional arguments: a pointer to bootmap file name and a predicate indicating if we need to add environment block as a boot component. Reviewed-by: Stefan Haberland <sth@linux.ibm.com> Reviewed-by: Peter Oberparleiter <oberpar@linux.ibm.com> Signed-off-by: Eduard Shishkin <edward6@linux.ibm.com> Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
142 lines
2.5 KiB
C
142 lines
2.5 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 "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_ipl_data {
|
|
char* image;
|
|
char* parmline;
|
|
char* ramdisk;
|
|
address_t image_addr;
|
|
address_t parm_addr;
|
|
address_t ramdisk_addr;
|
|
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 {
|
|
char* device;
|
|
char* image;
|
|
char* parmline;
|
|
char* ramdisk;
|
|
address_t image_addr;
|
|
address_t parm_addr;
|
|
address_t ramdisk_addr;
|
|
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 {
|
|
char* device;
|
|
char* image;
|
|
char* parmline;
|
|
char* ramdisk;
|
|
address_t image_addr;
|
|
address_t parm_addr;
|
|
address_t ramdisk_addr;
|
|
};
|
|
|
|
|
|
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 */
|