File: globalbp.h

package info (click to toggle)
pldebugger 1%3A1.9-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 320 kB
  • sloc: ansic: 3,176; sql: 226; makefile: 34; sh: 1
file content (64 lines) | stat: -rw-r--r-- 1,980 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
 * globalbp.h -
 *
 *	This file defines the (shared-memory) structures used by the PL debugger
 *  to keep track of global breakpoints.
 *
 * Copyright (c) 2004-2024 EnterpriseDB Corporation. All Rights Reserved.
 *
 * Licensed under the Artistic License v2.0, see
 *		https://opensource.org/licenses/artistic-license-2.0
 * for full details
 */
#ifndef GLOBALBP_H
#define GLOBALBP_H

#include "utils/hsearch.h"

typedef enum
{
	BP_LOCAL = 0,
	BP_GLOBAL
} eBreakpointScope;

/*
 * Stores information pertaining to a global breakpoint.
 */
typedef struct BreakpointData
{
	bool		isTmp;		/* tmp breakpoints are removed when hit */
	bool		busy;		/* is this session already in use by a target? */
	int			proxyPort;	/* port number of the proxy listener */
	int			proxyPid;	/* process id of the proxy process */
} BreakpointData;

/*
 * The key of the global breakpoints hash table. For now holds only have an Oid field.
 * but it may contain more fields in future.
 */
typedef struct BreakpointKey
{
	Oid			databaseId;
	Oid			functionId;
	int			lineNumber;
	int			targetPid;		/* -1 means any process */
} BreakpointKey;

typedef struct Breakpoint
{
	BreakpointKey		key;
	BreakpointData		data;
} Breakpoint;

extern Breakpoint * BreakpointLookup(eBreakpointScope scope, BreakpointKey *key);
extern bool 		BreakpointInsert(eBreakpointScope scope, BreakpointKey *key, BreakpointData *brkpnt);
extern bool 		BreakpointDelete(eBreakpointScope scope, BreakpointKey *key);
extern void 		BreakpointShowAll(eBreakpointScope scope);
extern bool			BreakpointInsertOrUpdate(eBreakpointScope scope, BreakpointKey *key, BreakpointData *data);
extern bool 		BreakpointOnId(eBreakpointScope scope, Oid funcOid);
extern void 		BreakpointCleanupProc(int pid);
extern void			BreakpointGetList(eBreakpointScope scope, HASH_SEQ_STATUS *scan);
extern void			BreakpointReleaseList(eBreakpointScope scope);
extern void 		BreakpointBusySession(int pid);
extern void 		BreakpointFreeSession(int pid);
#endif