#include <sys/times.h>
Go to the source code of this file.
Data Structures | |
struct | char2 |
struct | short2 |
struct | short3 |
struct | int2 |
struct | int3 |
struct | float2 |
struct | double2 |
struct | float3 |
struct | double3 |
struct | float4 |
struct | double4 |
struct | Box2i |
struct | Box2s |
struct | pkv_queue |
struct | xpoint |
Defines | |
#define | false 0 |
#define | true 1 |
#define | MAX_1BYTE 0xFF |
#define | MAX_2BYTE 0xFFFF |
#define | MAX_3BYTE 0xFFFFFF |
#define | MAX_4BYTE 0xFFFFFFFF |
#define | EXP1 2.7182818284590452353 |
#define | PI 3.1415926535897932384 |
#define | SQRT2 1.4142135623730950488 |
#define | SQRT3 1.7320508075688772935 |
#define | TAU 0.6180339887498948482 |
#define | min(a, b) ((a)<(b) ? (a) : (b)) |
#define | max(a, b) ((a)>(b) ? (a) : (b)) |
#define | LIB_PKVARIA 0 |
#define | LIB_PKNUM 1 |
#define | LIB_GEOM 2 |
#define | LIB_CAMERA 3 |
#define | LIB_PSOUT 4 |
#define | LIB_MULTIBS 5 |
#define | LIB_RAYBEZ 6 |
#define | LIB_EGHOLE 7 |
#define | LIB_G1BLENDING 8 |
#define | LIB_G2BLENDING 9 |
#define | LIB_BSFILE 10 |
#define | LIB_BSMESH 11 |
#define | LIB_XGEDIT 12 |
#define | pkv_GetScratchMemi(size) (int*)pkv_GetScratchMem ( (size)*sizeof(int) ) |
#define | pkv_FreeScratchMemi(size) pkv_FreeScratchMem ( (size)*sizeof(int) ) |
#define | pkv_ScratchMemAvaili() (pkv_ScratchMemAvail()/sizeof(int)) |
#define | pkv_GetScratchMemf(size) (float*)pkv_GetScratchMem ( (size)*sizeof(float) ) |
#define | pkv_FreeScratchMemf(size) pkv_FreeScratchMem ( (size)*sizeof(float) ) |
#define | pkv_ScratchMemAvailf() (pkv_ScratchMemAvail()/sizeof(float)) |
#define | pkv_GetScratchMemd(size) (double*)pkv_GetScratchMem ( (size)*sizeof(double) ) |
#define | pkv_FreeScratchMemd(size) pkv_FreeScratchMem ( (size)*sizeof(double) ) |
#define | pkv_ScratchMemAvaild() (pkv_ScratchMemAvail()/sizeof(double)) |
#define | ID_UNSIGNED 0 |
#define | ID_SIGNED_INT 1 |
#define | ID_IEEE754_FLOAT 2 |
#define | ID_IEEE754_DOUBLE 3 |
#define | ID_IEEE754_LONG_DOUBLE 4 |
#define | SORT_OK 1 |
#define | SORT_NO_MEMORY 0 |
#define | SORT_BAD_DATA 2 |
#define | pkv_ZeroMatf(nrows, rowlen, pitch, data) |
#define | pkv_Rearrangef(nrows, rowlen, inpitch, outpitch, data) |
#define | pkv_Selectf(nrows, rowlen, inpitch, outpitch, indata, outdata) |
#define | pkv_Movef(nrows, rowlen, pitch, shift, data) |
#define | pkv_ReverseMatf(nrows, rowlen, pitch, data) |
#define | pkv_ZeroMatd(nrows, rowlen, pitch, data) |
#define | pkv_Rearranged(nrows, rowlen, inpitch, outpitch, data) |
#define | pkv_Selectd(nrows, rowlen, inpitch, outpitch, indata, outdata) |
#define | pkv_Moved(nrows, rowlen, pitch, shift, data) |
#define | pkv_ReverseMatd(nrows, rowlen, pitch, data) |
#define | pkv_TransposeMatrixf(nrows, ncols, inpitch, indata, outpitch, outdata) |
#define | pkv_TransposeMatrixd(nrows, ncols, inpitch, indata, outpitch, outdata) |
#define | PKV_MALLOC(ptr, size) |
#define | PKV_FREE(ptr) |
#define | PKV_BUFSIZE 256 |
#define | PKV_FLUSH { _pkv_OutputPixels ( _pkv_pixbuf, _pkv_npix ); _pkv_npix = 0; } |
#define | PKV_PIXEL(p, px) { (px).x = (short)((p).x/(p).z+0.5); (px).y = (short)((p).y/(p).z+0.5); } |
#define | PKV_SETPIXEL(xx, yy) |
Typedefs | |
typedef unsigned char | boolean |
typedef unsigned char | byte |
typedef struct char2 | point2c |
typedef struct char2 | vector2c |
typedef struct short2 | point2s |
typedef struct short2 | vector2s |
typedef struct short3 | point3s |
typedef struct short3 | vector3s |
typedef struct int2 | point2i |
typedef struct int2 | vector2i |
typedef struct int3 | point3i |
typedef struct int3 | vector3i |
typedef struct float2 | point2f |
typedef struct float2 | vector2f |
typedef struct double2 | point2d |
typedef struct double2 | vector2d |
typedef struct float3 | point3f |
typedef struct float3 | vector3f |
typedef struct double3 | point3d |
typedef struct double3 | vector3d |
typedef struct float4 | point4f |
typedef struct float4 | vector4f |
typedef struct double4 | point4d |
typedef struct double4 | vector4d |
typedef struct Box2i | Box2i |
typedef struct Box2s | Box2s |
Functions | |
void | pkv_SignalError (int module, int errno, const char *errstr) |
void | pkv_SetErrorHandler (void(*ehandler)(int module, int errno, const char *errstr)) |
char | pkv_InitScratchMem (size_t size) |
void | pkv_DestroyScratchMem (void) |
void | PrintScratchMemData (void) |
double | pkv_SqAngle (double x, double y) |
void | pkv_RadToDegreeStr (double angle, char *txt) |
boolean | pkv_DegreeStrToRad (char *txt, double *angle) |
int | pkv_Binom (int n, int k) |
char | pkv_SortKernel (size_t key_size, char key_type, size_t item_length, size_t key_offset, unsigned int num_data, void *data, unsigned int *permut) |
char | pkv_SortPermute (size_t item_length, unsigned int num_data, void *data, unsigned int *permut) |
void | pkv_SortPermute2 (unsigned int num_data, size_t item_length1, void *data1, size_t item_length2, void *data2, unsigned int *permut) |
char | pkv_SortFast (size_t key_size, char key_type, size_t item_length, size_t key_offset, unsigned int num_data, void *data) |
void | pkv_QuickSort (int n, void *usrptr, boolean(*less)(int i, int j, void *usrptr), void(*swap)(int i, int j, void *usrptr)) |
pkv_queue * | pkv_InitQueue (int nmax, int itemsize) |
void | pkv_ResetQueue (pkv_queue *q) |
boolean | pkv_QueueEmpty (pkv_queue *q) |
boolean | pkv_QueueFull (pkv_queue *q) |
boolean | pkv_QueueInsert (pkv_queue *q, void *item) |
boolean | pkv_QueueGetFirst (pkv_queue *q, void *item) |
boolean | pkv_QueueRemoveFirst (pkv_queue *q, void *item) |
int | pkv_UpHeap (void *a[], int l, boolean(*cmp)(void *, void *)) |
int | pkv_DownHeap (void *a[], int l, int f, boolean(*cmp)(void *, void *)) |
int | pkv_HeapInsert (void *a[], int *l, void *newelem, boolean(*cmp)(void *, void *)) |
void | pkv_HeapRemove (void *a[], int *l, int el, boolean(*cmp)(void *, void *)) |
void | pkv_HeapOrder (void *a[], int n, boolean(*cmp)(void *, void *)) |
void | pkv_HeapSort (void *a[], int n, boolean(*cmp)(void *, void *)) |
void | pkv_ZeroMatc (int nrows, int rowlen, int pitch, char *data) |
void | pkv_Rearrangec (int nrows, int rowlen, int inpitch, int outpitch, char *data) |
void | pkv_Selectc (int nrows, int rowlen, int inpitch, int outpitch, const char *indata, char *outdata) |
void | pkv_Movec (int nrows, int rowlen, int pitch, int shift, char *data) |
void | pkv_ReverseMatc (int nrows, int rowlen, int pitch, char *data) |
void | pkv_TransposeMatrixc (int nrows, int ncols, int elemsize, int inpitch, const char *indata, int outpitch, char *outdata) |
void | pkv_Selectfd (int nrows, int rowlen, int inpitch, int outpitch, const float *indata, double *outdata) |
void | pkv_Selectdf (int nrows, int rowlen, int inpitch, int outpitch, const double *indata, float *outdata) |
double | pkv_rpower (double x, int e) |
void | pkv_Exchange (void *x, void *y, int size) |
void | pkv_Sort2f (float *a, float *b) |
void | pkv_Sort2d (double *a, double *b) |
char | pkv_signf (float x) |
char | pkv_signd (double x) |
void | pkv_HexByte (byte b, char *s) |
void | _pkv_InitPixelBuffer (void) |
void | _pkv_DestroyPixelBuffer (void) |
void | _pkv_DrawLine (int x1, int y1, int x2, int y2) |
void | pkv_DrawLine (int x1, int y1, int x2, int y2, void(*output)(const xpoint *buf, int n)) |
void | pkv_Tic (clock_t *_tic) |
int | pkv_Toc (clock_t *_toc) |
float | pkv_Seconds (clock_t ticks) |
void | WriteArrayf (const char *name, int lgt, const float *tab) |
void | WriteArrayd (const char *name, int lgt, const double *tab) |
void * | DMalloc (size_t size) |
void | DFree (void *ptr) |
Variables | |
void *(* | pkv_GetScratchMem )(size_t size) |
void(* | pkv_FreeScratchMem )(size_t size) |
void *(* | pkv_GetScratchMemTop )(void) |
void(* | pkv_SetScratchMemTop )(void *p) |
size_t(* | pkv_ScratchMemAvail )(void) |
size_t(* | pkv_MaxScratchTaken )(void) |
boolean | pkv_critical |
boolean | pkv_signal |
void(* | pkv_signal_handler )(void) |
void(* | pkv_register_memblock )(void *ptr, boolean alloc) |
void(* | _pkv_OutputPixels )(const xpoint *buf, int n) |
xpoint * | _pkv_pixbuf |
int | _pkv_npix |
#define EXP1 2.7182818284590452353 |
#define false 0 |
#define ID_IEEE754_DOUBLE 3 |
#define ID_IEEE754_FLOAT 2 |
#define ID_IEEE754_LONG_DOUBLE 4 |
#define ID_SIGNED_INT 1 |
#define ID_UNSIGNED 0 |
#define LIB_BSFILE 10 |
#define LIB_BSMESH 11 |
#define LIB_CAMERA 3 |
#define LIB_EGHOLE 7 |
#define LIB_G1BLENDING 8 |
#define LIB_G2BLENDING 9 |
#define LIB_GEOM 2 |
#define LIB_MULTIBS 5 |
#define LIB_PKNUM 1 |
#define LIB_PKVARIA 0 |
#define LIB_PSOUT 4 |
#define LIB_RAYBEZ 6 |
#define LIB_XGEDIT 12 |
#define max | ( | a, | ||
b | ||||
) | ((a)>(b) ? (a) : (b)) |
#define MAX_1BYTE 0xFF |
#define MAX_2BYTE 0xFFFF |
#define MAX_3BYTE 0xFFFFFF |
#define MAX_4BYTE 0xFFFFFFFF |
#define min | ( | a, | ||
b | ||||
) | ((a)<(b) ? (a) : (b)) |
#define PI 3.1415926535897932384 |
#define PKV_BUFSIZE 256 |
#define PKV_FLUSH { _pkv_OutputPixels ( _pkv_pixbuf, _pkv_npix ); _pkv_npix = 0; } |
#define PKV_FREE | ( | ptr | ) |
{ \ /*printf ( "free: ptr = 0x%x\n", (size_t)(ptr) ); */ \ if ( pkv_signal_handler ) { \ pkv_signal = false; \ pkv_critical = true; \ free ( (void*)(ptr) ); \ if ( pkv_register_memblock ) \ pkv_register_memblock ( (void*)(ptr), false ); \ (ptr) = NULL; \ pkv_critical = false; \ if ( pkv_signal ) \ pkv_signal_handler (); \ } \ else { \ free ( (void*)(ptr) ); \ (ptr) = NULL; \ } \ }
#define pkv_FreeScratchMemd | ( | size | ) | pkv_FreeScratchMem ( (size)*sizeof(double) ) |
#define pkv_FreeScratchMemf | ( | size | ) | pkv_FreeScratchMem ( (size)*sizeof(float) ) |
#define pkv_FreeScratchMemi | ( | size | ) | pkv_FreeScratchMem ( (size)*sizeof(int) ) |
#define pkv_GetScratchMemd | ( | size | ) | (double*)pkv_GetScratchMem ( (size)*sizeof(double) ) |
#define pkv_GetScratchMemf | ( | size | ) | (float*)pkv_GetScratchMem ( (size)*sizeof(float) ) |
#define pkv_GetScratchMemi | ( | size | ) | (int*)pkv_GetScratchMem ( (size)*sizeof(int) ) |
#define PKV_MALLOC | ( | ptr, | ||
size | ||||
) |
{ \ if ( pkv_signal_handler ) { \ pkv_signal = false; \ pkv_critical = true; \ (ptr) = malloc ( size ); \ if ( pkv_register_memblock ) \ pkv_register_memblock ( (void*)(ptr), true ); \ pkv_critical = false; \ if ( pkv_signal ) \ pkv_signal_handler (); \ } \ else \ (ptr) = malloc ( size ); \ /*printf ( "malloc: size = %d, ptr = 0x%x\n", size, (size_t)(ptr) ); */ \ }
#define pkv_Moved | ( | nrows, | ||
rowlen, | ||||
pitch, | ||||
shift, | ||||
data | ||||
) |
pkv_Movec(nrows,(rowlen)*sizeof(double),(pitch)*sizeof(double), \ (shift)*sizeof(double),(char*)data)
#define pkv_Movef | ( | nrows, | ||
rowlen, | ||||
pitch, | ||||
shift, | ||||
data | ||||
) |
pkv_Movec(nrows,(rowlen)*sizeof(float),(pitch)*sizeof(float), \ (shift)*sizeof(float),(char*)data)
#define PKV_PIXEL | ( | p, | ||
px | ||||
) | { (px).x = (short)((p).x/(p).z+0.5); (px).y = (short)((p).y/(p).z+0.5); } |
#define pkv_Rearranged | ( | nrows, | ||
rowlen, | ||||
inpitch, | ||||
outpitch, | ||||
data | ||||
) |
pkv_Rearrangec(nrows,(rowlen)*sizeof(double),(inpitch)*sizeof(double), \ (outpitch)*sizeof(double),(char*)data)
#define pkv_Rearrangef | ( | nrows, | ||
rowlen, | ||||
inpitch, | ||||
outpitch, | ||||
data | ||||
) |
pkv_Rearrangec(nrows,(rowlen)*sizeof(float),(inpitch)*sizeof(float), \ (outpitch)*sizeof(float),(char*)data)
#define pkv_ReverseMatd | ( | nrows, | ||
rowlen, | ||||
pitch, | ||||
data | ||||
) |
pkv_ReverseMatc ( nrows, (rowlen)*sizeof(double), (pitch)*sizeof(double), \ (char*)data )
#define pkv_ReverseMatf | ( | nrows, | ||
rowlen, | ||||
pitch, | ||||
data | ||||
) |
pkv_ReverseMatc ( nrows, (rowlen)*sizeof(float), (pitch)*sizeof(float), \ (char*)data )
#define pkv_ScratchMemAvaild | ( | ) | (pkv_ScratchMemAvail()/sizeof(double)) |
#define pkv_ScratchMemAvailf | ( | ) | (pkv_ScratchMemAvail()/sizeof(float)) |
#define pkv_ScratchMemAvaili | ( | ) | (pkv_ScratchMemAvail()/sizeof(int)) |
#define pkv_Selectd | ( | nrows, | ||
rowlen, | ||||
inpitch, | ||||
outpitch, | ||||
indata, | ||||
outdata | ||||
) |
pkv_Selectc(nrows,(rowlen)*sizeof(double),(inpitch)*sizeof(double), \ (outpitch)*sizeof(double),(char*)indata,(char*)outdata)
#define pkv_Selectf | ( | nrows, | ||
rowlen, | ||||
inpitch, | ||||
outpitch, | ||||
indata, | ||||
outdata | ||||
) |
pkv_Selectc(nrows,(rowlen)*sizeof(float),(inpitch)*sizeof(float), \ (outpitch)*sizeof(float),(char*)indata,(char*)outdata)
#define PKV_SETPIXEL | ( | xx, | ||
yy | ||||
) |
{ if ( _pkv_npix == PKV_BUFSIZE ) { PKV_FLUSH; _pkv_npix = 0; } \ _pkv_pixbuf[_pkv_npix].x = (short)xx; _pkv_pixbuf[_pkv_npix].y = (short)yy; \ _pkv_npix++; }
#define pkv_TransposeMatrixd | ( | nrows, | ||
ncols, | ||||
inpitch, | ||||
indata, | ||||
outpitch, | ||||
outdata | ||||
) |
pkv_TransposeMatrixc ( nrows, ncols, sizeof(double), \ (inpitch)*sizeof(double), (char*)indata, \ (outpitch)*sizeof(double), (char*)outdata )
#define pkv_TransposeMatrixf | ( | nrows, | ||
ncols, | ||||
inpitch, | ||||
indata, | ||||
outpitch, | ||||
outdata | ||||
) |
pkv_TransposeMatrixc ( nrows, ncols, sizeof(float), \ (inpitch)*sizeof(float), (char*)indata, \ (outpitch)*sizeof(float), (char*)outdata )
#define pkv_ZeroMatd | ( | nrows, | ||
rowlen, | ||||
pitch, | ||||
data | ||||
) |
pkv_ZeroMatc(nrows,(rowlen)*sizeof(double), \ (pitch)*sizeof(double),(char*)data)
#define pkv_ZeroMatf | ( | nrows, | ||
rowlen, | ||||
pitch, | ||||
data | ||||
) |
pkv_ZeroMatc(nrows,(rowlen)*sizeof(float), \ (pitch)*sizeof(float),(char*)data)
#define SORT_BAD_DATA 2 |
#define SORT_NO_MEMORY 0 |
#define SORT_OK 1 |
#define SQRT2 1.4142135623730950488 |
#define SQRT3 1.7320508075688772935 |
#define TAU 0.6180339887498948482 |
#define true 1 |
typedef unsigned char boolean |
typedef unsigned char byte |
void _pkv_DestroyPixelBuffer | ( | void | ) |
void _pkv_DrawLine | ( | int | x1, | |
int | y1, | |||
int | x2, | |||
int | y2 | |||
) |
void _pkv_InitPixelBuffer | ( | void | ) |
void DFree | ( | void * | ptr | ) |
void* DMalloc | ( | size_t | size | ) |
int pkv_Binom | ( | int | n, | |
int | k | |||
) |
boolean pkv_DegreeStrToRad | ( | char * | txt, | |
double * | angle | |||
) |
void pkv_DestroyScratchMem | ( | void | ) |
int pkv_DownHeap | ( | void * | a[], | |
int | l, | |||
int | f, | |||
boolean(*)(void *, void *) | cmp | |||
) |
void pkv_DrawLine | ( | int | x1, | |
int | y1, | |||
int | x2, | |||
int | y2, | |||
void(*)(const xpoint *buf, int n) | output | |||
) |
void pkv_Exchange | ( | void * | x, | |
void * | y, | |||
int | size | |||
) |
int pkv_HeapInsert | ( | void * | a[], | |
int * | l, | |||
void * | newelem, | |||
boolean(*)(void *, void *) | cmp | |||
) |
void pkv_HeapOrder | ( | void * | a[], | |
int | n, | |||
boolean(*)(void *, void *) | cmp | |||
) |
void pkv_HeapRemove | ( | void * | a[], | |
int * | l, | |||
int | el, | |||
boolean(*)(void *, void *) | cmp | |||
) |
void pkv_HeapSort | ( | void * | a[], | |
int | n, | |||
boolean(*)(void *, void *) | cmp | |||
) |
void pkv_HexByte | ( | byte | b, | |
char * | s | |||
) |
pkv_queue* pkv_InitQueue | ( | int | nmax, | |
int | itemsize | |||
) |
char pkv_InitScratchMem | ( | size_t | size | ) |
void pkv_Movec | ( | int | nrows, | |
int | rowlen, | |||
int | pitch, | |||
int | shift, | |||
char * | data | |||
) |
void pkv_QuickSort | ( | int | n, | |
void * | usrptr, | |||
boolean(*)(int i, int j, void *usrptr) | less, | |||
void(*)(int i, int j, void *usrptr) | swap | |||
) |
void pkv_RadToDegreeStr | ( | double | angle, | |
char * | txt | |||
) |
void pkv_Rearrangec | ( | int | nrows, | |
int | rowlen, | |||
int | inpitch, | |||
int | outpitch, | |||
char * | data | |||
) |
void pkv_ResetQueue | ( | pkv_queue * | q | ) |
void pkv_ReverseMatc | ( | int | nrows, | |
int | rowlen, | |||
int | pitch, | |||
char * | data | |||
) |
double pkv_rpower | ( | double | x, | |
int | e | |||
) |
float pkv_Seconds | ( | clock_t | ticks | ) |
void pkv_Selectc | ( | int | nrows, | |
int | rowlen, | |||
int | inpitch, | |||
int | outpitch, | |||
const char * | indata, | |||
char * | outdata | |||
) |
void pkv_Selectdf | ( | int | nrows, | |
int | rowlen, | |||
int | inpitch, | |||
int | outpitch, | |||
const double * | indata, | |||
float * | outdata | |||
) |
void pkv_Selectfd | ( | int | nrows, | |
int | rowlen, | |||
int | inpitch, | |||
int | outpitch, | |||
const float * | indata, | |||
double * | outdata | |||
) |
void pkv_SetErrorHandler | ( | void(*)(int module, int errno, const char *errstr) | ehandler | ) |
void pkv_SignalError | ( | int | module, | |
int | errno, | |||
const char * | errstr | |||
) |
char pkv_signd | ( | double | x | ) |
char pkv_signf | ( | float | x | ) |
void pkv_Sort2d | ( | double * | a, | |
double * | b | |||
) |
void pkv_Sort2f | ( | float * | a, | |
float * | b | |||
) |
char pkv_SortFast | ( | size_t | key_size, | |
char | key_type, | |||
size_t | item_length, | |||
size_t | key_offset, | |||
unsigned int | num_data, | |||
void * | data | |||
) |
char pkv_SortKernel | ( | size_t | key_size, | |
char | key_type, | |||
size_t | item_length, | |||
size_t | key_offset, | |||
unsigned int | num_data, | |||
void * | data, | |||
unsigned int * | permut | |||
) |
char pkv_SortPermute | ( | size_t | item_length, | |
unsigned int | num_data, | |||
void * | data, | |||
unsigned int * | permut | |||
) |
void pkv_SortPermute2 | ( | unsigned int | num_data, | |
size_t | item_length1, | |||
void * | data1, | |||
size_t | item_length2, | |||
void * | data2, | |||
unsigned int * | permut | |||
) |
double pkv_SqAngle | ( | double | x, | |
double | y | |||
) |
void pkv_Tic | ( | clock_t * | _tic | ) |
int pkv_Toc | ( | clock_t * | _toc | ) |
void pkv_TransposeMatrixc | ( | int | nrows, | |
int | ncols, | |||
int | elemsize, | |||
int | inpitch, | |||
const char * | indata, | |||
int | outpitch, | |||
char * | outdata | |||
) |
int pkv_UpHeap | ( | void * | a[], | |
int | l, | |||
boolean(*)(void *, void *) | cmp | |||
) |
void pkv_ZeroMatc | ( | int | nrows, | |
int | rowlen, | |||
int | pitch, | |||
char * | data | |||
) |
void PrintScratchMemData | ( | void | ) |
void WriteArrayd | ( | const char * | name, | |
int | lgt, | |||
const double * | tab | |||
) |
void WriteArrayf | ( | const char * | name, | |
int | lgt, | |||
const float * | tab | |||
) |
int _pkv_npix |
void(* _pkv_OutputPixels)(const xpoint *buf, int n) |
void(* pkv_FreeScratchMem)(size_t size) |
void*(* pkv_GetScratchMem)(size_t size) |
void*(* pkv_GetScratchMemTop)(void) |
size_t(* pkv_MaxScratchTaken)(void) |
void(* pkv_register_memblock)(void *ptr, boolean alloc) |
size_t(* pkv_ScratchMemAvail)(void) |
void(* pkv_SetScratchMemTop)(void *p) |
void(* pkv_signal_handler)(void) |