/usr/include/smrbt.h is in libion-dev 3.2.1+dfsg-1.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | /*
smrbt.h: definitions supporting use of red-black trees
in shared memory.
Author: Scott Burleigh, JPL
Modification History:
Date Who What
11-17-11 SCB Adapted from Julienne Walker tutorial, public
domain code.
(http://eternallyconfuzzled.com/tuts/datastructures/jsw_tut_rbtree.aspx)
Copyright (c) 2011 California Institute of Technology.
ALL RIGHTS RESERVED. U.S. Government Sponsorship
acknowledged.
*/
#ifndef _SMRBT_H_
#define _SMRBT_H_
#include "psm.h"
#ifndef SMRBT_DEBUG
#define SMRBT_DEBUG 0
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Functions for operating on red-black trees in shared memory. */
typedef int (*SmRbtCompareFn)(PsmPartition partition,
PsmAddress nodeData, void *dataBuffer);
/* Note: an SmRbtCompareFn operates by comparing some value(s)
derived from its first argument (which will always be the
sm_rbt_data of some shared memory rbt node) to some value(s)
derived from its second argument (which is typically a pointer
to an object residing in memory). */
typedef void (*SmRbtDeleteFn)(PsmPartition partition,
PsmAddress nodeData, void *arg);
#define sm_rbt_create(partition) \
Sm_rbt_create(__FILE__, __LINE__, partition)
extern PsmAddress Sm_rbt_create(char *file, int line,
PsmPartition partition);
extern void sm_rbt_unwedge(PsmPartition partition, PsmAddress rbt,
int interval);
#define sm_rbt_clear(partition, rbt, deleteFn, argument) \
Sm_rbt_clear(__FILE__, __LINE__, partition, rbt, deleteFn, argument)
extern void Sm_rbt_clear(char *file, int line,
PsmPartition partition, PsmAddress rbt,
SmRbtDeleteFn deleteFn, void *argument);
#define sm_rbt_destroy(partition, rbt, deleteFn, argument) \
Sm_rbt_destroy(__FILE__, __LINE__, partition, rbt, deleteFn, argument)
extern void Sm_rbt_destroy(char *file, int line,
PsmPartition partition, PsmAddress rbt,
SmRbtDeleteFn deleteFn, void *argument);
extern PsmAddress sm_rbt_user_data(PsmPartition partition,
PsmAddress rbt);
extern void sm_rbt_user_data_set( PsmPartition partition,
PsmAddress rbt, PsmAddress userData);
extern long sm_rbt_length(PsmPartition partition, PsmAddress rbt);
#define sm_rbt_insert(partition, rbt, data, compare, dataBuffer) \
Sm_rbt_insert(__FILE__, __LINE__, partition, rbt, data, compare, dataBuffer)
extern PsmAddress Sm_rbt_insert(char *file, int line,
PsmPartition partition, PsmAddress rbt,
PsmAddress data, SmRbtCompareFn compare,
void *dataBuffer);
#define sm_rbt_delete(partition, rbt, compare, dataBuffer, deleteFn, \
argument) Sm_rbt_delete(__FILE__, __LINE__, partition, rbt, compare, \
dataBuffer, deleteFn, argument)
extern void Sm_rbt_delete(char *file, int line,
PsmPartition partition, PsmAddress rbt,
SmRbtCompareFn compare, void *dataBuffer,
SmRbtDeleteFn deleteFn, void *argument);
extern PsmAddress sm_rbt_search(PsmPartition partition, PsmAddress rbt,
SmRbtCompareFn compare, void *dataBuffer,
PsmAddress *successor);
extern PsmAddress sm_rbt_first(PsmPartition partition, PsmAddress rbt);
extern PsmAddress sm_rbt_last(PsmPartition partition, PsmAddress rbt);
#define sm_rbt_prev(partition, node) Sm_rbt_traverse(partition, node, 0)
#define sm_rbt_next(partition, node) Sm_rbt_traverse(partition, node, 1)
extern PsmAddress Sm_rbt_traverse(PsmPartition partition,
PsmAddress node, int direction);
extern PsmAddress sm_rbt_rbt(PsmPartition partition, PsmAddress node);
extern PsmAddress sm_rbt_data(PsmPartition partition, PsmAddress node);
#ifdef __cplusplus
}
#endif
#endif /* _SMRBT_H_ */
|