1/*-------------------------------------------------------------------------
2 *
3 * sharedfileset.h
4 * Shared temporary file management.
5 *
6 *
7 * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
9 *
10 * src/include/storage/sharedfileset.h
11 *
12 *-------------------------------------------------------------------------
13 */
14
15#ifndef SHAREDFILESET_H
16#define SHAREDFILESET_H
17
18#include "storage/dsm.h"
19#include "storage/fd.h"
20#include "storage/spin.h"
21
22/*
23 * A set of temporary files that can be shared by multiple backends.
24 */
25typedef struct SharedFileSet
26{
27 pid_t creator_pid; /* PID of the creating process */
28 uint32 number; /* per-PID identifier */
29 slock_t mutex; /* mutex protecting the reference count */
30 int refcnt; /* number of attached backends */
31 int ntablespaces; /* number of tablespaces to use */
32 Oid tablespaces[8]; /* OIDs of tablespaces to use. Assumes that
33 * it's rare that there more than temp
34 * tablespaces. */
35} SharedFileSet;
36
37extern void SharedFileSetInit(SharedFileSet *fileset, dsm_segment *seg);
38extern void SharedFileSetAttach(SharedFileSet *fileset, dsm_segment *seg);
39extern File SharedFileSetCreate(SharedFileSet *fileset, const char *name);
40extern File SharedFileSetOpen(SharedFileSet *fileset, const char *name);
41extern bool SharedFileSetDelete(SharedFileSet *fileset, const char *name,
42 bool error_on_failure);
43extern void SharedFileSetDeleteAll(SharedFileSet *fileset);
44
45#endif
46