H5F_file_t  *uncloseable_head = NULL; /* Head of linked list of files found to be uncloseable by the first pass */
 
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * Copyright by The HDF Group.                                               *
 * Copyright by the Board of Trustees of the University of Illinois.         *
 * All rights reserved.                                                      *
 *                                                                           *
 * This file is part of HDF5.  The full HDF5 copyright notice, including     *
 * terms governing use, modification, and redistribution, is contained in    *
 * the COPYING file, which can be found at the root of the source code       *
 * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases.  *
 * If you do not have access to either file, you may request a copy from     *
 * help@hdfgroup.org.                                                        *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*-------------------------------------------------------------------------
 *
 * Created:             H5Defc.c
 *                      December 13, 2010
 *                      Neil Fortner <nfortne2@hdfgroup.org>
 *
 * Purpose:             External file caching routines - implements a
 *                      cache of external files to minimize the number of
 *                      file opens and closes.
 *
 *-------------------------------------------------------------------------
 */
#define H5F_PACKAGE             /*suppress error about including H5Fpkg   */
/* Packages needed by this file... */
#include "H5private.h"          /* Generic Functions                    */
#include "H5Eprivate.h"         /* Error handling                       */
#include "H5Fpkg.h"             /* File access                          */
#include "H5MMprivate.h"        /* Memory management                    */
#include "H5Pprivate.h"         /* Property lists                       */
/* Special values for the "tag" field below */
#define H5F_EFC_TAG_DEFAULT     -1
#define H5F_EFC_TAG_LOCK        -2
#define H5F_EFC_TAG_CLOSE       -3
#define H5F_EFC_TAG_DONTCLOSE   -4
/* Structure for each entry in a file's external file cache */
typedef struct H5F_efc_ent_t {
    char                *name;          /* Name of the file */
    H5F_t               *file;          /* File object */
    struct H5F_efc_ent_t *LRU_next;     /* Next item in LRU list */
    struct H5F_efc_ent_t *LRU_prev;     /* Previous item in LRU list */
    unsigned            nopen;          /* Number of times this file is currently opened by an EFC client */
} H5F_efc_ent_t;