smgr.h 4.1 KB
Newer Older
1 2
/*-------------------------------------------------------------------------
 *
3
 * smgr.h
4
 *	  storage manager switch public interface declarations.
5 6
 *
 *
B
Add:  
Bruce Momjian 已提交
7 8
 * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
 * Portions Copyright (c) 1994, Regents of the University of California
9
 *
10
 * $Id: smgr.h,v 1.22 2000/10/16 14:52:28 vadim Exp $
11 12 13 14 15 16
 *
 *-------------------------------------------------------------------------
 */
#ifndef SMGR_H
#define SMGR_H

17
#include "storage/relfilenode.h"
18
#include "storage/block.h"
B
Bruce Momjian 已提交
19
#include "storage/spin.h"
20
#include "utils/rel.h"
21

22 23
#define SM_FAIL			0
#define SM_SUCCESS		1
24

25
#define DEFAULT_SMGR	0
26

27 28 29 30 31 32
extern int	smgrinit(void);
extern int	smgrcreate(int16 which, Relation reln);
extern int	smgrunlink(int16 which, Relation reln);
extern int	smgrextend(int16 which, Relation reln, char *buffer);
extern int	smgropen(int16 which, Relation reln);
extern int	smgrclose(int16 which, Relation reln);
33 34 35 36 37 38
extern int smgrread(int16 which, Relation reln, BlockNumber blocknum,
		 char *buffer);
extern int smgrwrite(int16 which, Relation reln, BlockNumber blocknum,
		  char *buffer);
extern int smgrflush(int16 which, Relation reln, BlockNumber blocknum,
		  char *buffer);
39
#ifdef OLD_FILE_NAMING
40 41 42 43 44 45 46
extern int smgrblindwrt(int16 which, char *dbname, char *relname,
			 Oid dbid, Oid relid,
			 BlockNumber blkno, char *buffer,
			 bool dofsync);
extern int smgrblindmarkdirty(int16 which, char *dbname, char *relname,
				   Oid dbid, Oid relid,
				   BlockNumber blkno);
47 48 49 50 51 52 53
#else
extern int smgrblindwrt(int16 which, RelFileNode rnode,
						BlockNumber blkno, char *buffer, bool dofsync);
extern int smgrblindmarkdirty(int16 which, RelFileNode rnode,
						BlockNumber blkno);
#endif
extern int	smgrmarkdirty(int16 which, Relation reln, BlockNumber blkno);
54 55 56
extern int	smgrnblocks(int16 which, Relation reln);
extern int	smgrtruncate(int16 which, Relation reln, int nblocks);
extern int	smgrcommit(void);
57
extern int	smgrabort(void);
58 59 60 61 62 63



/* internals: move me elsewhere -- ay 7/94 */

/* in md.c */
64 65 66 67 68 69 70 71 72
extern int	mdinit(void);
extern int	mdcreate(Relation reln);
extern int	mdunlink(Relation reln);
extern int	mdextend(Relation reln, char *buffer);
extern int	mdopen(Relation reln);
extern int	mdclose(Relation reln);
extern int	mdread(Relation reln, BlockNumber blocknum, char *buffer);
extern int	mdwrite(Relation reln, BlockNumber blocknum, char *buffer);
extern int	mdflush(Relation reln, BlockNumber blocknum, char *buffer);
73 74
extern int	mdmarkdirty(Relation reln, BlockNumber blkno);
#ifdef OLD_FILE_NAMING
75 76 77 78 79
extern int mdblindwrt(char *dbname, char *relname, Oid dbid, Oid relid,
		   BlockNumber blkno, char *buffer,
		   bool dofsync);
extern int mdblindmarkdirty(char *dbname, char *relname, Oid dbid, Oid relid,
				 BlockNumber blkno);
80 81 82 83 84
#else
extern int mdblindwrt(RelFileNode rnode, BlockNumber blkno,
						char *buffer, bool dofsync);
extern int mdblindmarkdirty(RelFileNode rnode, BlockNumber blkno);
#endif
85 86 87 88
extern int	mdnblocks(Relation reln);
extern int	mdtruncate(Relation reln, int nblocks);
extern int	mdcommit(void);
extern int	mdabort(void);
89 90 91 92

/* mm.c */
extern SPINLOCK MMCacheLock;

93 94 95 96 97 98 99 100 101
extern int	mminit(void);
extern int	mmcreate(Relation reln);
extern int	mmunlink(Relation reln);
extern int	mmextend(Relation reln, char *buffer);
extern int	mmopen(Relation reln);
extern int	mmclose(Relation reln);
extern int	mmread(Relation reln, BlockNumber blocknum, char *buffer);
extern int	mmwrite(Relation reln, BlockNumber blocknum, char *buffer);
extern int	mmflush(Relation reln, BlockNumber blocknum, char *buffer);
102 103 104
extern int mmblindwrt(char *dbname, char *relname, Oid dbid, Oid relid,
		   BlockNumber blkno, char *buffer,
		   bool dofsync);
105
extern int	mmmarkdirty(Relation reln, BlockNumber blkno);
106 107
extern int mmblindmarkdirty(char *dbname, char *relname, Oid dbid, Oid relid,
				 BlockNumber blkno);
108
extern int	mmnblocks(Relation reln);
109
extern int	mmtruncate(Relation reln, int nblocks);
110 111
extern int	mmcommit(void);
extern int	mmabort(void);
112 113

extern int	mmshutdown(void);
114
extern int	MMShmemSize(void);
115

B
Bruce Momjian 已提交
116
/* smgrtype.c */
117 118 119 120
extern Datum smgrout(PG_FUNCTION_ARGS);
extern Datum smgrin(PG_FUNCTION_ARGS);
extern Datum smgreq(PG_FUNCTION_ARGS);
extern Datum smgrne(PG_FUNCTION_ARGS);
B
Bruce Momjian 已提交
121

122
#endif	 /* SMGR_H */