Annotation of coherent/g/usr/lib/uucp/tay104/uuconf/alloc.h, revision 1.1

1.1     ! root        1: /* alloc.h
        !             2:    Header file for uuconf memory allocation routines.
        !             3: 
        !             4:    Copyright (C) 1992 Ian Lance Taylor
        !             5: 
        !             6:    This file is part of the Taylor UUCP uuconf library.
        !             7: 
        !             8:    This library is free software; you can redistribute it and/or
        !             9:    modify it under the terms of the GNU Library General Public License
        !            10:    as published by the Free Software Foundation; either version 2 of
        !            11:    the License, or (at your option) any later version.
        !            12: 
        !            13:    This library is distributed in the hope that it will be useful, but
        !            14:    WITHOUT ANY WARRANTY; without even the implied warranty of
        !            15:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
        !            16:    Library General Public License for more details.
        !            17: 
        !            18:    You should have received a copy of the GNU Library General Public
        !            19:    License along with this library; if not, write to the Free Software
        !            20:    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
        !            21: 
        !            22:    The author of the program may be contacted at [email protected] or
        !            23:    c/o Infinity Development Systems, P.O. Box 520, Waltham, MA 02254.
        !            24:    */
        !            25: 
        !            26: /* This header file is private to the uuconf memory allocation
        !            27:    routines, and should not be included by any other files.  */
        !            28: 
        !            29: /* We want to be able to keep track of allocated memory blocks, so
        !            30:    that we can free them up later.  This will let us free up all the
        !            31:    memory allocated to hold information for a system, for example.  We
        !            32:    do this by allocating large chunks and doling them out.  Calling
        !            33:    uuconf_malloc_block will return a pointer to a magic cookie which
        !            34:    can then be passed to uuconf_malloc and uuconf_free.  Passing the
        !            35:    pointer to uuconf_free_block will free all memory allocated for
        !            36:    that block.  */
        !            37: 
        !            38: /* We allocate this much space in each block.  On most systems, this
        !            39:    will make the actual structure 1024 bytes, which may be convenient
        !            40:    for some types of memory allocators.  */
        !            41: #define CALLOC_SIZE (1008)
        !            42: 
        !            43: /* This is the actual structure of a block.  */
        !            44: struct sblock
        !            45: {
        !            46:   /* Next block in linked list.  */
        !            47:   struct sblock *qnext;
        !            48:   /* Index of next free spot.  */
        !            49:   size_t ifree;
        !            50:   /* Last value returned by uuconf_malloc for this block.  */
        !            51:   pointer plast;
        !            52:   /* List of additional memory blocks.  */
        !            53:   struct sadded *qadded;
        !            54:   /* Buffer of data.  We put it in a union with a double to make sure
        !            55:      it is adequately aligned.  */
        !            56:   union
        !            57:     {
        !            58:       char ab[CALLOC_SIZE];
        !            59:       double l;
        !            60:     } u;
        !            61: };
        !            62: 
        !            63: /* There is a linked list of additional memory blocks inserted by
        !            64:    uuconf_add_block.  */
        !            65: struct sadded
        !            66: {
        !            67:   /* The next in the list.  */
        !            68:   struct sadded *qnext;
        !            69:   /* The added block.  */
        !            70:   pointer padded;
        !            71: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.