new for 3.14
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
#ifndef INCregistryDeviceSupporth
|
||||
#define INCregistryDeviceSupporth
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int registryDeviceSupportAdd(const char *name,struct dset *pdset);
|
||||
struct dset *registryDeviceSupportFind(const char *name);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* INCregistryDeviceSupporth */
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef INCregistryDriverSupporth
|
||||
#define INCregistryDriverSupporth
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* c interface definitions */
|
||||
int registryDriverSupportAdd(const char *name,struct drvet *pdrvet);
|
||||
struct drvet *registryDriverSupportFind(const char *name);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* INCregistryDriverSupporth */
|
||||
@@ -0,0 +1,28 @@
|
||||
#ifndef INCregistryRecordTypeh
|
||||
#define INCregistryRecordTypeh
|
||||
|
||||
#include "dbStaticLib.h"
|
||||
|
||||
typedef int (*computeSizeOffset)(dbRecordType *pdbRecordType);
|
||||
|
||||
typedef struct recordTypeLocation {
|
||||
struct rset *prset;
|
||||
computeSizeOffset sizeOffset;
|
||||
}recordTypeLocation;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int registryRecordTypeAdd(const char *name,recordTypeLocation *prtl);
|
||||
recordTypeLocation *registryRecordTypeFind(const char *name);
|
||||
|
||||
/* The following function is generated by registerRecordDeviceDriver/pl */
|
||||
int registerRecordDeviceDriver(DBBASE *pdbbase);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* INCregistryRecordTypeh */
|
||||
@@ -0,0 +1,30 @@
|
||||
TOP=../..
|
||||
include $(TOP)/configure/CONFIG
|
||||
|
||||
# includes to install from this sub-project
|
||||
#
|
||||
|
||||
INC += registry.h
|
||||
INC += registryDeviceSupport.h
|
||||
INC += registryDriverSupport.h
|
||||
INC += registryRecordType.h
|
||||
|
||||
# general contents of library on all platforms
|
||||
#
|
||||
# system specific lines in RULES.Host figure out
|
||||
# 1) what object names (.o, .obj,...) to build
|
||||
# 2) where to find the sources: ., ./os/<ARCH_CLASS>, ./os/generic, ...
|
||||
#
|
||||
|
||||
SCRIPTS += registerRecordDeviceDriver.pl
|
||||
|
||||
registryLibrary_SRCS += registry.c
|
||||
registryLibrary_SRCS += registryRecordType.c
|
||||
registryLibrary_SRCS += registryDeviceSupport.c
|
||||
registryLibrary_SRCS += registryDriverSupport.c
|
||||
|
||||
IOC_PROD_vxWorks = registerRecordDeviceDriver.o
|
||||
|
||||
IOC_LIBRARY_vxWorks = registryLibrary
|
||||
|
||||
include $(TOP)/configure/RULES_BUILD
|
||||
@@ -0,0 +1,84 @@
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "recSup.h"
|
||||
#include "devSup.h"
|
||||
#include "drvSup.h"
|
||||
#include "cantProceed.h"
|
||||
#include "registry.h"
|
||||
#include "registryRecordType.h"
|
||||
#include "registryDeviceSupport.h"
|
||||
#include "registryDriverSupport.h"
|
||||
|
||||
int registerRecordDeviceDriver(DBBASE *pdbbase)
|
||||
{
|
||||
dbRecordType *pdbRecordType;
|
||||
recordTypeLocation *precordTypeLocation;
|
||||
struct rset *prset;
|
||||
computeSizeOffset sizeOffset;
|
||||
char name[100];
|
||||
drvSup *pdrvSup;
|
||||
|
||||
if(!pdbbase) {
|
||||
printf("pdbbase not specified\n");
|
||||
return(0);
|
||||
}
|
||||
for(pdbRecordType = (dbRecordType *)ellFirst(&pdbbase->recordTypeList);
|
||||
pdbRecordType;
|
||||
pdbRecordType = (dbRecordType *)ellNext(&pdbRecordType->node)) {
|
||||
if(registryRecordTypeFind(pdbRecordType->name)) continue;
|
||||
strcpy(name,pdbRecordType->name);
|
||||
strcat(name,"RSET");
|
||||
prset = 0;
|
||||
prset = registryFind(0,name);
|
||||
if(!prset) continue;
|
||||
strcpy(name,pdbRecordType->name);
|
||||
strcat(name,"RecordSizeOffset");
|
||||
sizeOffset = 0;
|
||||
sizeOffset = (computeSizeOffset) registryFind(0,name);
|
||||
if(!sizeOffset) continue;
|
||||
precordTypeLocation = callocMustSucceed(1,sizeof(recordTypeLocation),
|
||||
"registerRecordDeviceDriver");
|
||||
precordTypeLocation->prset = prset;
|
||||
precordTypeLocation->sizeOffset = sizeOffset;
|
||||
if(!registryRecordTypeAdd(pdbRecordType->name,precordTypeLocation)) {
|
||||
errlogPrintf("registryRecordTypeAdd failed for %s\n",
|
||||
pdbRecordType->name);
|
||||
continue;
|
||||
}
|
||||
sizeOffset(pdbRecordType);
|
||||
}
|
||||
for(pdbRecordType = (dbRecordType *)ellFirst(&pdbbase->recordTypeList);
|
||||
pdbRecordType;
|
||||
pdbRecordType = (dbRecordType *)ellNext(&pdbRecordType->node)) {
|
||||
devSup *pdevSup;
|
||||
struct dset *pdset;
|
||||
for(pdevSup = (devSup *)ellFirst(&pdbRecordType->devList);
|
||||
pdevSup;
|
||||
pdevSup = (devSup *)ellNext(&pdevSup->node)) {
|
||||
if(registryDeviceSupportFind(pdevSup->name)) continue;
|
||||
pdset = registryFind(0,pdevSup->name);
|
||||
if(!pdset) continue;
|
||||
if(!registryDeviceSupportAdd(pdevSup->name,pdset)) {
|
||||
errlogPrintf("registryRecordTypeAdd failed for %s\n",
|
||||
pdevSup->name);
|
||||
}
|
||||
}
|
||||
}
|
||||
for(pdrvSup = (drvSup *)ellFirst(&pdbbase->drvList);
|
||||
pdrvSup;
|
||||
pdrvSup = (drvSup *)ellNext(&pdrvSup->node)) {
|
||||
struct drvet *pdrvet = 0;
|
||||
if(registryDriverSupportFind(pdrvSup->name)) continue;
|
||||
pdrvet = registryFind(0,pdrvSup->name);
|
||||
if(!pdrvet) continue;
|
||||
if(!registryDriverSupportAdd(pdrvSup->name,pdrvet)) {
|
||||
errlogPrintf("registryRecordTypeAdd failed for %s\n",
|
||||
pdrvSup->name);
|
||||
}
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
Executable
+176
@@ -0,0 +1,176 @@
|
||||
eval 'exec perl -S $0 ${1+"$@"}' # -*- Mode: perl -*-
|
||||
if $running_under_some_shell; # registerRecordDeviceDriver
|
||||
|
||||
$file = $ARGV[0];
|
||||
$numberRecordType = 0;
|
||||
$numberDeviceSupport = 0;
|
||||
$numberDriverSupport = 0;
|
||||
|
||||
open(INP,"$file") or die "$! opening file";
|
||||
while(<INP>) {
|
||||
if( /recordtype/) {
|
||||
/recordtype\s*\(\s*(\w+)/;
|
||||
$recordType[$numberRecordType++] = $1;
|
||||
}
|
||||
if( /device/) {
|
||||
/device\s*\(\s*(\s*\w+)\W+\w+\W+(\w+)/;
|
||||
$deviceRecordType[$numberDeviceSupport] = $1;
|
||||
$deviceSupport[$numberDeviceSupport] = $2;
|
||||
$numberDeviceSupport++;
|
||||
}
|
||||
if( /driver/) {
|
||||
/driver\s*\(\s*(\w+)/;
|
||||
$driverSupport[$numberDriverSupport++] = $1;
|
||||
}
|
||||
}
|
||||
close(INP) or die "$! closing file";
|
||||
# beginning of generated routine
|
||||
|
||||
print << "END" ;
|
||||
/*#registerRecordDeviceDriver.c */
|
||||
/* THIS IS A GENERATED FILE. DO NOT EDIT */
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "recSup.h"
|
||||
#include "devSup.h"
|
||||
#include "drvSup.h"
|
||||
#include "registryRecordType.h"
|
||||
#include "registryDeviceSupport.h"
|
||||
#include "registryDriverSupport.h"
|
||||
|
||||
END
|
||||
|
||||
#definitions for recordtype
|
||||
if($numberRecordType>0) {
|
||||
for ($i=0; $i<$numberRecordType; $i++) {
|
||||
print "extern struct rset $recordType[$i]RSET;\n";
|
||||
print "extern int $recordType[$i]RecordSizeOffset(dbRecordType *pdbRecordType);\n";
|
||||
#NOTE the followimng caused a compiler error on vxWorks
|
||||
# print "extern computeSizeOffset $recordType[$i]RecordSizeOffset;\n";
|
||||
}
|
||||
print "\nstatic char *recordTypeNames[$numberRecordType] = {\n";
|
||||
for ($i=0; $i<$numberRecordType; $i++) {
|
||||
print " \"$recordType[$i]\"";
|
||||
if($i < $numberRecordType-1) { print ",";}
|
||||
print "\n";
|
||||
}
|
||||
print "};\n\n";
|
||||
|
||||
print "static recordTypeLocation rtl[$i] = {\n";
|
||||
for ($i=0; $i<$numberRecordType; $i++) {
|
||||
print " {&$recordType[$i]RSET, $recordType[$i]RecordSizeOffset}";
|
||||
if($i < $numberRecordType-1) { print ",";}
|
||||
print "\n";
|
||||
}
|
||||
print "};\n\n";
|
||||
}
|
||||
|
||||
#definitions for device
|
||||
if($numberDeviceSupport>0) {
|
||||
for ($i=0; $i<$numberDeviceSupport; $i++) {
|
||||
print "extern struct dset $deviceSupport[$i];\n";
|
||||
}
|
||||
print "\nstatic char *deviceSupportNames[$numberDeviceSupport] = {\n";
|
||||
for ($i=0; $i<$numberDeviceSupport; $i++) {
|
||||
print " \"$deviceSupport[$i]\"";
|
||||
if($i < $numberDeviceSupport-1) { print ",";}
|
||||
print "\n";
|
||||
}
|
||||
print "};\n\n";
|
||||
|
||||
print "static struct dset *devsl[$i] = {\n";
|
||||
for ($i=0; $i<$numberDeviceSupport; $i++) {
|
||||
print " &$deviceSupport[$i]";
|
||||
if($i < $numberDeviceSupport-1) { print ",";}
|
||||
print "\n";
|
||||
}
|
||||
print "};\n\n";
|
||||
}
|
||||
|
||||
#definitions for driver
|
||||
if($numberDriverSupport>0) {
|
||||
for ($i=0; $i<$numberDriverSupport; $i++) {
|
||||
print "extern struct drvet $driverSupport[$i];\n";
|
||||
}
|
||||
print "\nstatic char *driverSupportNames[$numberDriverSupport] = {\n";
|
||||
for ($i=0; $i<$numberDriverSupport; $i++) {
|
||||
print " \"$driverSupport[$i]\"";
|
||||
if($i < $numberDriverSupport-1) { print ",";}
|
||||
print "\n";
|
||||
}
|
||||
print "};\n\n";
|
||||
|
||||
print "static struct drvet *drvsl[$i] = {\n";
|
||||
for ($i=0; $i<$numberDriverSupport; $i++) {
|
||||
print " &$driverSupport[$i]";
|
||||
if($i < $numberDriverSupport-1) { print ",";}
|
||||
print "\n";
|
||||
}
|
||||
print "};\n\n";
|
||||
}
|
||||
|
||||
#Now actual registration code.
|
||||
|
||||
print << "END" ;
|
||||
int registerRecordDeviceDriver(DBBASE *pdbbase)
|
||||
{
|
||||
int i;
|
||||
int result;
|
||||
static int alreadyCalled = 0;
|
||||
if(alreadyCalled) {
|
||||
printf(\"registerRecordDeviceDriver called multiple times\\n\");
|
||||
return(-1);
|
||||
}
|
||||
END
|
||||
if($numberRecordType>0) {
|
||||
print << "END" ;
|
||||
for(i=0; i< $numberRecordType; i++ ) {
|
||||
result = registryRecordTypeAdd(recordTypeNames[i],&rtl[i]);
|
||||
if(result) {
|
||||
recordTypeLocation *precordTypeLocation;
|
||||
int (*sizeOffset)(dbRecordType *pdbRecordType);
|
||||
DBENTRY dbEntry;
|
||||
|
||||
dbInitEntry(pdbbase,&dbEntry);
|
||||
precordTypeLocation = registryRecordTypeFind(recordTypeNames[i]);
|
||||
sizeOffset = precordTypeLocation->sizeOffset;
|
||||
if(dbFindRecordType(&dbEntry,recordTypeNames[i])) {
|
||||
printf(\"registerRecordDeviceDriver failed %s\\n\",
|
||||
recordTypeNames[i]);
|
||||
} else {
|
||||
sizeOffset(dbEntry.precordType);
|
||||
}
|
||||
} else {
|
||||
printf(\"registerRecordDeviceDriver failed %s\\n\",recordTypeNames[i]);
|
||||
}
|
||||
}
|
||||
END
|
||||
}
|
||||
if($numberDeviceSupport>0) {
|
||||
print << "END" ;
|
||||
for(i=0; i< $numberDeviceSupport; i++ ) {
|
||||
result = registryDeviceSupportAdd(deviceSupportNames[i],devsl[i]);
|
||||
if(!result)
|
||||
printf(\"registerRecordDeviceDriver failed %s\\n\",
|
||||
\"deviceSupportNames[i]\");
|
||||
}
|
||||
END
|
||||
}
|
||||
if($numberDriverSupport>0) {
|
||||
print << "END" ;
|
||||
for(i=0; i< $numberDriverSupport; i++ ) {
|
||||
result = registryDriverSupportAdd(driverSupportNames[i],drvsl[i]);
|
||||
if(!result)
|
||||
printf(\"registerRecordDeviceDriver failed %s\\n\",
|
||||
\"driverSupportNames[i]\");
|
||||
}
|
||||
END
|
||||
}
|
||||
print << "END" ;
|
||||
return(0);
|
||||
}
|
||||
END
|
||||
@@ -0,0 +1,74 @@
|
||||
/*registry.c */
|
||||
|
||||
/* Author: Marty Kraimer Date: 08JUN99 */
|
||||
|
||||
/********************COPYRIGHT NOTIFICATION**********************************
|
||||
This software was developed under a United States Government license
|
||||
described on the COPYRIGHT_UniversityOfChicago file included as part
|
||||
of this distribution.
|
||||
****************************************************************************/
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "dbDefs.h"
|
||||
#include "cantProceed.h"
|
||||
#include "osiFindGlobalSymbol.h"
|
||||
#include "gpHash.h"
|
||||
#include "registry.h"
|
||||
|
||||
static void *gphPvt = 0;
|
||||
|
||||
static void registryInit(int tableSize)
|
||||
{
|
||||
if(tableSize==0) tableSize = DEFAULT_TABLE_SIZE;
|
||||
gphInitPvt(&gphPvt,tableSize);
|
||||
if(!gphPvt) cantProceed("registry why did gphInitPvt fail\n");
|
||||
}
|
||||
|
||||
int registrySetTableSize(int size)
|
||||
{
|
||||
if(gphPvt) {
|
||||
printf("registryInit already called\n");
|
||||
return(-1);
|
||||
}
|
||||
registryInit(size);
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
int registryAdd(void *registryID,const char *name,void *data)
|
||||
{
|
||||
GPHENTRY *pentry;
|
||||
if(!gphPvt) registryInit(0);
|
||||
pentry = gphAdd(gphPvt,name,registryID);
|
||||
if(!pentry) return(FALSE);
|
||||
pentry->userPvt = (void *)data;
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
void *registryFind(void *registryID,const char *name)
|
||||
{
|
||||
GPHENTRY *pentry;
|
||||
if(name==0) return(0);
|
||||
if(registryID==0) return(osiFindGlobalSymbol(name));
|
||||
if(!gphPvt) registryInit(0);
|
||||
pentry = gphFind(gphPvt,(char *)name,registryID);
|
||||
if(!pentry) return(0);
|
||||
return(pentry->userPvt);
|
||||
}
|
||||
|
||||
void registryFree()
|
||||
{
|
||||
if(!gphPvt) return;
|
||||
gphFreeMem(gphPvt);
|
||||
}
|
||||
|
||||
int registryDump(void)
|
||||
{
|
||||
if(!gphPvt) return(0);
|
||||
gphDump(gphPvt);
|
||||
return(0);
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
#ifndef INCregistryh
|
||||
#define INCregistryh
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define DEFAULT_TABLE_SIZE 1024
|
||||
|
||||
int registryAdd(void *registryID,const char *name,void *data);
|
||||
void *registryFind(void *registryID,const char *name);
|
||||
|
||||
int registrySetTableSize(int size);
|
||||
void registryFree();
|
||||
int registryDump(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* INCregistryh */
|
||||
@@ -0,0 +1,31 @@
|
||||
/* registryDeviceSupport.c */
|
||||
|
||||
/* Author: Marty Kraimer Date: 08JUN99 */
|
||||
|
||||
/********************COPYRIGHT NOTIFICATION**********************************
|
||||
This software was developed under a United States Government license
|
||||
described on the COPYRIGHT_UniversityOfChicago file included as part
|
||||
of this distribution.
|
||||
****************************************************************************/
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#include "registry.h"
|
||||
#include "dbBase.h"
|
||||
#include "devSup.h"
|
||||
#include "registryDeviceSupport.h"
|
||||
|
||||
const char *deviceSupport = "device support";
|
||||
static void *registryID = &deviceSupport;
|
||||
|
||||
|
||||
int registryDeviceSupportAdd(const char *name,struct dset *pdset)
|
||||
{
|
||||
return(registryAdd(registryID,name,(void *)pdset));
|
||||
}
|
||||
|
||||
struct dset *registryDeviceSupportFind(const char *name)
|
||||
{
|
||||
return((struct dset *)registryFind(registryID,name));
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
#ifndef INCregistryDeviceSupporth
|
||||
#define INCregistryDeviceSupporth
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int registryDeviceSupportAdd(const char *name,struct dset *pdset);
|
||||
struct dset *registryDeviceSupportFind(const char *name);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* INCregistryDeviceSupporth */
|
||||
@@ -0,0 +1,31 @@
|
||||
/* registryDriverSupport.c */
|
||||
|
||||
/* Author: Marty Kraimer Date: 08JUN99 */
|
||||
|
||||
/********************COPYRIGHT NOTIFICATION**********************************
|
||||
This software was developed under a United States Government license
|
||||
described on the COPYRIGHT_UniversityOfChicago file included as part
|
||||
of this distribution.
|
||||
****************************************************************************/
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#include "registry.h"
|
||||
#include "dbBase.h"
|
||||
#include "drvSup.h"
|
||||
#include "registryDriverSupport.h"
|
||||
|
||||
const char *driverSupport = "driver support";
|
||||
static void *registryID = &driverSupport;
|
||||
|
||||
|
||||
int registryDriverSupportAdd(const char *name,struct drvet *pdrvet)
|
||||
{
|
||||
return(registryAdd(registryID,name,(void *)pdrvet));
|
||||
}
|
||||
|
||||
struct drvet *registryDriverSupportFind(const char *name)
|
||||
{
|
||||
return((struct drvet *)registryFind(registryID,name));
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef INCregistryDriverSupporth
|
||||
#define INCregistryDriverSupporth
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* c interface definitions */
|
||||
int registryDriverSupportAdd(const char *name,struct drvet *pdrvet);
|
||||
struct drvet *registryDriverSupportFind(const char *name);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* INCregistryDriverSupporth */
|
||||
@@ -0,0 +1,30 @@
|
||||
/* registryRecordType.c */
|
||||
|
||||
/* Author: Marty Kraimer Date: 08JUN99 */
|
||||
|
||||
/********************COPYRIGHT NOTIFICATION**********************************
|
||||
This software was developed under a United States Government license
|
||||
described on the COPYRIGHT_UniversityOfChicago file included as part
|
||||
of this distribution.
|
||||
****************************************************************************/
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#include "registry.h"
|
||||
#include "dbBase.h"
|
||||
#include "registryRecordType.h"
|
||||
|
||||
const char *recordType = "record type";
|
||||
static void *registryID = &recordType;
|
||||
|
||||
|
||||
int registryRecordTypeAdd(const char *name,recordTypeLocation *prtl)
|
||||
{
|
||||
return(registryAdd(registryID,name,(void *)prtl));
|
||||
}
|
||||
|
||||
recordTypeLocation *registryRecordTypeFind(const char *name)
|
||||
{
|
||||
return((recordTypeLocation *)registryFind(registryID,name));
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
#ifndef INCregistryRecordTypeh
|
||||
#define INCregistryRecordTypeh
|
||||
|
||||
#include "dbStaticLib.h"
|
||||
|
||||
typedef int (*computeSizeOffset)(dbRecordType *pdbRecordType);
|
||||
|
||||
typedef struct recordTypeLocation {
|
||||
struct rset *prset;
|
||||
computeSizeOffset sizeOffset;
|
||||
}recordTypeLocation;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int registryRecordTypeAdd(const char *name,recordTypeLocation *prtl);
|
||||
recordTypeLocation *registryRecordTypeFind(const char *name);
|
||||
|
||||
/* The following function is generated by registerRecordDeviceDriver/pl */
|
||||
int registerRecordDeviceDriver(DBBASE *pdbbase);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* INCregistryRecordTypeh */
|
||||
Reference in New Issue
Block a user