This file is indexed.

/usr/include/freehdl/kernel-sig-info.hh is in libfreehdl0-dev 0.0.8-2.2.

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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
#ifndef FREEHDL_KERNEL_SIG_INFO_H
#define FREEHDL_KERNEL_SIG_INFO_H

#include <string>
#include <freehdl/kernel-classes.hh>
#include <freehdl/kernel-list.hh>
#include <freehdl/kernel-name-stack.hh>
#include <freehdl/std-standard.hh>


/*
 * Information flow of signals
 */
#define vIN  1
#define vOUT 2
#define vINOUT 3
#define vBUFFER 4
#define vLINKAGE 5

/* 
 * Some internal kernal flags
 */
#define IS_DUMPED 1

/*
 * Signal type of a signal
 */
#define vREGISTER 1
#define vBUS 2

/*
 * Signal kind types
 */
#define vPLAIN 0
#define vDELAYED 1
#define vTRANSACTION 2
#define vSTABLE 3
#define vQUIET 4
#define vALIAS 5

/*
 * Delay type
 */
#define vTRANSPORT 1
#define vINERTIAL 2


/******************************************************
 * Some definitions which are used by the kernel only 
 ******************************************************/
#ifdef KERNEL

#include <string>
#include <map>
#include <list>
#include <freehdl/kernel-source-descriptor.hh>
#include <freehdl/kernel-db.hh>

// Define some data types for the kernel data base. Note that some
// information about signals are not directly stored to the
// corresponding sig_info class bus put into the kernel data base in
// order to make sig_info more slim.
struct sig_info_extensions {
  // Scalar items the signal reader consists of
  int scalar_count;
  // List of drivers for the signal. Note that there is an entry in
  // the list for each scalar element which is driven by a process
  //simple_list<driver_info*> driver_list;

  char mode;
  char sig_type;
  char kind;

  // Instance name and name of the signal
  string instance_name, name;

  // A set of flags defined by the kernel to store kernel related
  // informations about this signal. This flag is intialized with 0.
  int kernel_flags;

  // Points to the next sig_info_base in the list. Used to get a list
  // of sig_info_base pointer according to their creation time.
  sig_info_base *next_sig_info;
};


define_db_key_type (sig_info_base*, sig_info_base_p);
define_db_entry_type (sig_info_extensions, sig_info_extension);


// signal_name_table is a hash tables (map) to associate signal names with
// the corresponding sign_info_base pointers.
typedef map<string, sig_info_base*, less<string> > signal_map_t;
extern signal_map_t signal_name_table;

// A stack which is used to keep track which signals has been created
// within which component during elaboration. Note that this stack
// does only include any valid data during elaboration. It is cleared
// before simulation starts.
typedef list<list<sig_info_base *> > signal_component_stack_t;
extern signal_component_stack_t signal_component_stack;

/******************************************************
 * End of internal kernel definitions    
 ******************************************************/
#endif


class reader_info;
class map_list;

/* sig info core class. This class holds all informations which are
 * needed by some functions that require only a subset of the entire
 * sig_info information set. */
struct sig_info_core {
  // Type of the signal
  type_info_interface *type;
  // array of reader_info pointers. There is a separate pointer
  // for each scalar element of the signal
  reader_info **readers;
};

/*
 * Base sig info class
 */
struct sig_info_base : public sig_info_core {
  // Points to the reader object of the signal
  void *reader_pointer; 

  /* Constructors */
  sig_info_base(name_stack &iname, const char *n, const char *sln,
		map_list *mlist, type_info_interface *ty, char dir, void *sr);
  sig_info_base(name_stack &iname, const char *n, const char *sln,
		type_info_interface *ty, char sty, void *sr);
  sig_info_base(name_stack &iname, const char *n, const char *sln,
		type_info_interface *ty, char attr, sig_info_base *base_sig,
		acl *aclp, vtime delay, void *sr);
  sig_info_base(name_stack &iname, const char *n, const char *sln,
		type_info_interface *ty, sig_info_base *aliased_sig,
		acl *aclp, void *sr);

  // Cleans up sig_info
  void cleanup ();
  // Inits the reader of a signal
  void init_reader(const void *src);
};



template<class T>class sig_info : public sig_info_base {
 public:
  /* Casts the reader pointer to the corresponding type */
  T &reader() { return *(T*)reader_pointer; }
  /* Constructor to instantiate a port signal */
  sig_info(name_stack &iname, const char *n, const char *sln, map_list *mlist,
	   type_info_interface *type, char direction, void *sr) : 
    sig_info_base(iname, n, sln, mlist, type, direction, sr) {};
  /* Constructor to instantiate "normal" signal */
  sig_info(name_stack &iname, const char *n, const char *sln,
	   type_info_interface *type, char sigtype, void *sr) :
    sig_info_base(iname, n, sln, type, sigtype, sr) {};
  /* Constructor to instantiate a signal kind attribute */
  sig_info(name_stack &iname, const char *n, const char *sln,
	   type_info_interface *type, char attr, sig_info_base *base_sig,
	   acl *aclp, vtime delay, void *sr) :
    sig_info_base(iname, n, sln, type, attr, base_sig, aclp, delay, sr) {};
  /* Constructor to instantiate a guard signal */
  sig_info(name_stack &iname, const char *n, const char *sln,
	   void *reader, void *sr) : 
    sig_info_base(iname, n, sln, reader, sr) {};
  /* Constructor to instantiate an alias signal */
  sig_info(name_stack &iname, const char *n, const char *sln,
	   type_info_interface *ty, sig_info_base *aliased_sig,
	   acl *aclp, void *sr) :
    sig_info_base (iname, n, sln, ty, aliased_sig, aclp, sr) {};
  /* Init the reader of the signal */
  void init(const T &value) { init_reader(&value); }
};


#endif