Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
cckd(4)			   Kernel Interfaces Manual		       cckd(4)

NAME
       cckd - Hercules Compressed CKD DASD image file

DESCRIPTION
       Hercules	 DASD image file that emulates IBM mainframe DASD devices on a
       (usually) non-mainframe platform.  Specified in the Hercules configura-
       tion file (default name hercules.cnf) to	describe the DASD devices Her-
       cules is	to emulate.  Also specified as input  and/or  output  file  to
       several	Hercules utilities.  Hercules compressed DASD devices are fre-
       quently referred	to as CCKD.  Hercules uncompressed  DASD  devices  are
       frequently  referred  to	 as  CKD.   Hercules  CKD DASD image files are
       largely compatible with P/390 AWS DASD files.

TECHNICAL OVERVIEW
       The following provides a	technical overview  of	CCKD  internal	struc-
       tures.	Except as indicated below, data	in the following structures is
       stored in the byte order	indicated by the  CDEVHDR.options  CCKD_BIGEN-
       DIAN  bit  (the	0x02 bit).  This bit is	1 when data is big-endian byte
       order, 0	when data is little-endian byte	order.

   DEVHDR
       occupies	the first 512 bytes of a CKD or	CCKD DASD  file.   The	DEVHDR
       contains	 the  device  type  and	the number of heads per	cylinder.  Its
       contents	are the	same whether the DASD image is	compressed  (CCKD)  or
       not (CKD).  Described by	the CKDDASD_DEVHDR struct; 512 bytes in	size.

   CDEVHDR
       immediately follows the DEVHDR, and contains fields describing the num-
       ber of L1ENTs in	the L1TAB, the number of L2ENTs	in each	L2TAB, and an-
       chors  the  free	space chain.  Described	by the CCKDDASD_DEVHDR struct;
       512 bytes in size.

   L1TAB
       immediately follows the CDEVHDR,	and consists of	L1ENT entries, each of
       which points to an L2TAB.  Each L1ENT is	an U32 (4 bytes)  offset  into
       the  CCKD  DASD	file.	The  CDEVHDR numl1tab field describes how many
       L1ENTs are in the L1TAB.	 L1ENTs	are described by the CCKD_L1ENT	 type-
       def;  the L1TAB is of variable size.  Conceptually each L1ENT describes
       cdevhdr.numl2tab	tracks.

   L2TAB
       is pointed to by	an L1ENT, and is composed of L2ENT entries, the	number
       of which	is described by	the  CDEVHDR  numl2tab	field;	currently  256
       L2ENTs in each L2TAB.  L2ENTs contain the offset	to the TRKHDR, and the
       combined	 length	 of the	TRKHDR and (optionally)	compressed track data.
       The CDEVHDR numl2tab field describes how	many L2ENTs are	in each	L2TAB.
       Currently, there	are 256	 L2ENTs	 in  each  L2TAB.   Described  by  the
       CCKD_L2ENT  struct;  (256  * 8) bytes in	size.  Conceptually each L2ENT
       describes one track.

   FREEBLK
       describes free space in the CCKD	DASD image, anchored  by  the  CDEVHDR
       free  field.   Consists	of  a 4	byte offset to the next	free space (or
       zero for	end of free space chain), and a	4  byte	 length	 of  the  free
       space  (which  length  includes the 8 bytes occupied by the FREEBLK it-
       self), followed by zero or more bytes of	residual data.	 Described  by
       the first 8 bytes of the	CCKD_FREEBLK struct; 8 bytes in	size.

   TRKHDR
       Occurs  once at the beginning of	each track.  contains flag (one	byte),
       CC (two bytes), and HH (two bytes) of the track.	 When the flag byte  =
       0x00,  TRKHDR  is the same as the Home Address on real DASD.  Flag bits
       are described in	hercules.h, and	are of the format nlllllcc  where  n=1
       for new track header format, lllll is used for track recovery purposes,
       and  cc describes the track compression algorithm.  The compression al-
       gorithms	are: B'00' = uncompressed, B'01' = zlib, B'10' = bzip2,	 B'11'
       is  currently invalid.  Data in TRKHDR is stored	in big-endian byte or-
       der.  Described by the CKDDASD_TRKHDR struct; 5 bytes in	size.

   COUNT field
       8 bytes,	containing CC (two bytes), HH (two bytes), R  (one  byte),  KL
       (one  byte),  and  DL  (two bytes).  CC is the (relative	zero) cylinder
       number.	HH is the (relative zero) head number.	 R  is	the  (relative
       zero) record number on the track.  KL is	the key	length;	if zero	no key
       is  present.   DL  is the length	of the data record.  Data in the COUNT
       field is	stored in  big-endian  byte  order.   Described	 by  the  CKD-
       DASD_RECHDR struct; 8 bytes in size.

   KEY field
       if  present,  KL	 bytes	of  record  key; immediately follows the COUNT
       field.  Byte order is not a factor for the KEY field; to	the extent  it
       is examined by Hercules code it is simply a byte	stream.	 Size varies.

   DATA	field.
       if  present, DL bytes of	record data; immediately follows the KEY field
       for keyed record, else immediately follows the COUNT field for  unkeyed
       records.	  Byte order is	not a factor for the DATA field; to the	extent
       it is examined by Hercules code it  is  simply  a  byte	stream.	  Size
       varies.

GLOSSARY
   CKD
       Count,  Key,  Data - contents of	an track.  Also	refers to the Hercules
       uncompressed DASD image file.

   CCKD
       Compressed Count, Key, Data - compressed	contents  of  a	 track.	  Also
       refers to the Hercules compressed DASD image file.

   DASD
       Direct Access Storage Device - term the IBM mainframe world uses	to re-
       fer to hard drives.

   EOT
       End Of Track - indicated	by 8X'FF' in the COUNT field.

SEE ALSO
       http://www.hercules-390.org/ the	Hercules emulator homepage.

       http://www.hercules-390.org/cckddasd.html which describes
	      the Hercules CCKD	DASD facility.

       http://www.hercules-390.org/hercconf.html which describes
	      the Hercules configuration file.

HISTORY
       2003-02-07 originally written by	James M. Morrison

				  2003-02-03			       cckd(4)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=cckd&sektion=4&manpath=FreeBSD+Ports+15.0.quarterly>

home | help