#line 1 "test_ukey2.c"
#line 1 "/usr/include/stdio.h"
#line 7 "/usr/include/stdio.h"
















 
 
 

 
 
 





 
#line 1 "/usr/include/standards.h"

















 































 





 



















 
#line 86 "/usr/include/standards.h"












 











 











 






 












 










 





 


#line 37 "/usr/include/stdio.h"
#line 1 "/usr/include/sgidefs.h"










 























 






 





 









 


		 










 



































 











 






 
#line 135 "/usr/include/sgidefs.h"

typedef int __int32_t;
typedef unsigned  __uint32_t;

#line 145 "/usr/include/sgidefs.h"



































 

	 
typedef long long __int64_t;
typedef unsigned long long  __uint64_t;

#line 215 "/usr/include/sgidefs.h"




typedef __int32_t __psint_t;
typedef __uint32_t __psunsigned_t;










 
#line 239 "/usr/include/sgidefs.h"

 
typedef __int32_t __scint_t;
typedef __uint32_t __scunsigned_t;









#line 38 "/usr/include/stdio.h"





typedef unsigned int 	size_t;







typedef __int64_t	fpos_t;
#line 59 "/usr/include/stdio.h"
 
typedef	__int64_t	fpos64_t;





 


typedef char *va_list;













#line 89 "/usr/include/stdio.h"







#line 107 "/usr/include/stdio.h"










#line 123 "/usr/include/stdio.h"
















typedef struct	 








 
__file_s

{

	int		_cnt;	 




	unsigned char	*_ptr;	 
	unsigned char	*_base;	 




	unsigned char	_flag;	 
	unsigned char	_o_file;	 
	unsigned short	_file;	 




} FILE;

extern FILE		__iob[100];	
extern FILE		*_lastbuf;
extern unsigned char 	*_bufendtab[];
extern unsigned char	 _sibuf[], _sobuf[];

extern int	remove(const char *);
extern int	rename(const char *, const char *);
extern FILE	*tmpfile(void);
extern char	*tmpnam(char *);
extern int	fclose(FILE *);
extern int	fflush(FILE *);
extern FILE	*fopen(const char *, const char *);
extern FILE	*freopen(const char *, const char *, FILE *);
extern void	setbuf(FILE *, char *);
extern int	setvbuf(FILE *, char *, int, size_t);
 
extern int	fprintf(FILE *, const char *, ...);
 
extern int	fscanf(FILE *, const char *, ...);
 
extern int	printf(const char *, ...);
 
extern int	scanf(const char *, ...);
 
extern int	sprintf(char *, const char *, ...);
 
extern int	sscanf(const char *, const char *, ...);
extern int	vfprintf(FILE *, const char *,   char *);
extern int	vprintf(const char *,   char *);
extern int	vsprintf(char *, const char *,   char *);


#pragma intrinsic (printf)
#pragma intrinsic (fprintf)
#pragma intrinsic (sprintf)
#pragma intrinsic (scanf)
#pragma intrinsic (fscanf)
#pragma intrinsic (sscanf)


extern int	fgetc(FILE *);
extern char	*fgets(char *, int, FILE *); 
extern int	fputc(int, FILE *);
extern int	fputs(const char *, FILE *);
extern int	getc(FILE *);
extern int	getchar(void);
extern char	*gets(char *);
extern int	putc(int, FILE *);
extern int	putchar(int);
extern int	puts(const char *);
extern int	ungetc(int, FILE *);
extern size_t	fread(void *, size_t, size_t, FILE *);
#pragma int_to_unsigned fread
extern size_t	fwrite(const void *, size_t, size_t, FILE *);
#pragma int_to_unsigned fwrite
extern int	fgetpos(FILE *, fpos_t *);
extern int	fseek(FILE *, long, int);
extern int	fsetpos(FILE *, const fpos_t *);
extern long	ftell(FILE *);
extern void	rewind(FILE *);
extern void	clearerr(FILE *);
extern int	feof(FILE *);
extern int	ferror(FILE *);
extern void	perror(const char *);

extern int	__filbuf(FILE *);	
extern int	__flsbuf(int, FILE *);	


	 
extern FILE    *fdopen(int, const char *);
extern int	fileno(FILE *);



	 
extern void	flockfile(FILE *);
extern int	ftrylockfile(FILE *);
extern void	funlockfile(FILE *);
extern int	getc_unlocked(FILE *);
extern int	putc_unlocked(int, FILE *);
extern int	getchar_unlocked(void);
extern int	putchar_unlocked(int);



extern FILE	*popen(const char *, const char *);
extern int	pclose(FILE *);


	 
#line 1 "/usr/include/getopt.h"
#line 7 "/usr/include/getopt.h"


















 



extern int	getopt(int, char *const *, const char *);

extern char	*optarg;
extern int	opterr;
extern int	optind;
extern int	optopt;







 


extern int	getsubopt(char **, char *const *, char **);
extern void	getoptreset(void);






#line 265 "/usr/include/stdio.h"
extern char	*ctermid(char *);
extern char	*cuserid(char *);
extern char	*tempnam(const char *, const char *);
extern int	getw(FILE *);
extern int	putw(int, FILE *);




	 
extern char	*mktemp(char *);
extern int	mkstemp(char *);
extern int	setbuffer(FILE *, char *, int);
extern int	setlinebuf(FILE *);
extern int	system(const char *);

	 
extern int	fgetpos64(FILE *, fpos64_t *);
 
extern int	fseek64(FILE *, __int64_t, int);
extern int	fsetpos64(FILE *, const fpos64_t *);
 
extern __int64_t ftell64(FILE *);



extern int	__semputc(int, FILE *);
extern int	__semgetc(FILE *);
extern int	__us_rsthread_stdio;



extern char	*ctermid_r(char *);














 

 





 




 
#line 337 "/usr/include/stdio.h"

 
#line 348 "/usr/include/stdio.h"

#line 393 "/usr/include/stdio.h"





#line 2 "test_ukey2.c"
#line 1 "/usr/include/stdlib.h"
#line 7 "/usr/include/stdlib.h"
















 
 
 

 
 
 



 







 



 


#line 65 "/usr/include/stdlib.h"






 




#line 88 "/usr/include/stdlib.h"


typedef	struct {
	 int	quot;
	 int	rem;
	} div_t;

typedef struct {
	 long	quot;
	 long	rem;
	} ldiv_t;


typedef struct {
	 long long	quot;
	 long long	rem;
	} lldiv_t;


#line 116 "/usr/include/stdlib.h"





typedef int	ssize_t;
#line 128 "/usr/include/stdlib.h"




typedef long wchar_t;






extern unsigned char 	__ctype[];	



 
extern double atof(const char *);
extern int atoi(const char *);
extern long int atol(const char *);
extern double strtod(const char *, char **);
extern long int strtol(const char *, char **, int);
extern unsigned long int strtoul(const char *, char **, int);
extern int rand(void);
extern void srand(unsigned int);
extern void *calloc(size_t, size_t);
extern void free(void *);
extern void *malloc(size_t);
extern void *realloc(void *, size_t);
extern void abort(void);
extern int atexit(void (*)(void));
extern void exit(int);
extern char *getenv(const char *);
extern int system(const char *);
extern void *bsearch(const void *, const void *, size_t, size_t,
	int (*)(const void *, const void *));
extern void qsort(void *, size_t, size_t,
	int (*)(const void *, const void *));

#line 172 "/usr/include/stdlib.h"
extern int abs(int);


extern div_t div(int, int);
extern long int labs(long);
extern ldiv_t ldiv(long, long);
extern int mbtowc(wchar_t *, const char *, size_t);
extern int mblen(const char *, size_t);
extern int wctomb(char *, wchar_t);
extern size_t mbstowcs(wchar_t *, const char *, size_t);
extern size_t wcstombs(char *, const wchar_t *, size_t);


	 
extern int putenv(const char *);
extern double	drand48(void);
extern double	erand48(unsigned short [3]);
extern long	lrand48(void);
extern long	nrand48(unsigned short [3]);
extern long	mrand48(void);
extern long	jrand48(unsigned short [3]);
extern void	srand48(long);
extern void	lcong48(unsigned short int [7]);
extern void     setkey(const char *);
extern unsigned short * seed48(unsigned short int [3]);



	 
extern long a64l(const char *);
extern char *ecvt(double, int, int *, int *);
extern char *fcvt(double, int, int *, int *);
extern char *gcvt(double, int, char *);
extern int getsubopt(char **, char * const *, char **);
extern int grantpt(int);
extern char *initstate(unsigned int, char *, int);
extern char *l64a(long);
extern char *mktemp(char *);
extern int mkstemp(char *);
extern char *ptsname(int);
extern long random(void);
extern char *realpath(const char *, char *);
extern int ttyslot(void);
extern int unlockpt(int);
extern void *valloc(size_t);



extern int rand_r(unsigned int *);



	 
extern int dup2(int, int);
extern char *getcwd(char *, size_t);
extern char *getlogin(void);

extern char *getpass(const char *);
extern int getpw(int, char *);
extern int isatty(int);
extern void l3tol(long *, const char *, int);
extern void ltol3(char *, const long *, int);
extern void *memalign(size_t, size_t);
extern void swab(const void *, void *, ssize_t);
extern char *ttyname(int);

	 

extern long double atold(const char *);
extern long double strtold(const char *nptr, char **endptr);
extern char *qecvt(long double, int, int *, int *);
extern char *qfcvt(long double, int, int *, int *);
extern char *qgcvt(long double, int, char *);

extern long long int atoll(const char *);
extern long long int strtoll(const char *, char **, int);
extern unsigned long long int strtoull(const char *, char **, int);
extern long long llabs(long long);
extern lldiv_t lldiv(long long, long long);



extern char *ecvt_r(double, int, int *, int *, char *);
extern char *fcvt_r(double, int, int *, int *, char *);

extern char *qecvt_r(long double, int, int *, int *, char *);
extern char *qfcvt_r(long double, int, int *, int *, char *);





#line 3 "test_ukey2.c"
#line 1 "/usr/include/ulocks.h"










 









#line 1 "/usr/include/sys/types.h"















 
 
 

 
 
 









 
typedef unsigned char   uchar_t;
typedef unsigned short  ushort_t;
typedef unsigned int    uint_t;
typedef unsigned long   ulong_t;

 
typedef	char *		addr_t;		 
typedef	char *		caddr_t;	 

typedef	__int64_t	daddr_t;	 



typedef	long		pgno_t;		 
typedef	__uint32_t	pfn_t;		 
typedef	short		cnt_t;		 



 
typedef __int32_t	pgcnt_t;	 

typedef enum { B_FALSE, B_TRUE } boolean_t;








 


typedef long			id_t;	 
					 
					 
					 
					 





 


typedef ulong_t	major_t;	 
typedef ulong_t	minor_t;	 
















 
typedef	ushort_t o_mode_t;		 
typedef short	o_dev_t;		 
typedef	ushort_t o_uid_t;		 
typedef	o_uid_t	o_gid_t;		 
typedef	short	o_nlink_t;		 
typedef short	o_pid_t;		 
typedef __uint32_t o_ino_t;		 


typedef	unsigned long	mode_t;		 
typedef	unsigned long	dev_t;		 
typedef	long		uid_t;
typedef	long		gid_t;
typedef unsigned long	nlink_t;	 
typedef long		pid_t;		 
#line 123 "/usr/include/sys/types.h"


typedef	__uint64_t	ino_t;		 



typedef __uint64_t	ino64_t;	 






typedef __int64_t	off_t;		 



typedef	__int64_t	off64_t;	 

typedef __scint_t	__scoff_t;	 

typedef __scoff_t	scoff_t;	 



typedef	__int64_t	blkcnt_t;	 
typedef	__uint64_t	fsblkcnt_t;	 
typedef	__uint64_t	fsfilcnt_t;	 






typedef	long		swblk_t;
typedef	unsigned long	paddr_t;	 
typedef	int		key_t;		 
typedef	unsigned char	use_t;		 
typedef	short		sysid_t;
typedef	short		index_t;
typedef unsigned int 	lock_t;		 
typedef	signed char	cpuid_t;	 
typedef	unsigned char	pri_t;		 
typedef __uint64_t	accum_t;	 
typedef __int64_t	prid_t;		 
typedef __int64_t	ash_t;		 

#line 179 "/usr/include/sys/types.h"

#line 189 "/usr/include/sys/types.h"




typedef	long		time_t;		 









typedef	long		clock_t;  






#line 219 "/usr/include/sys/types.h"



typedef int             clockid_t;



typedef int		timer_t;







 
typedef	unsigned int	useconds_t;





 
typedef __scunsigned_t	bitnum_t;	 
typedef __scunsigned_t	bitlen_t;	 


typedef int processorid_t;		 
typedef int toid_t;			 
typedef	long *qaddr_t;		       
typedef __uint32_t inst_t;		 

 






typedef __uint64_t machreg_t;


 






typedef __uint64_t fpreg_t;





 




typedef signed char             int8_t;
typedef unsigned char           uint8_t;
typedef signed short            int16_t;
typedef unsigned short          uint16_t;
typedef signed int              int32_t;
typedef unsigned int            uint32_t;
typedef __int64_t 		int64_t;
typedef __uint64_t		uint64_t;
typedef __int64_t 		intmax_t;
typedef __uint64_t		uintmax_t;
typedef signed long int         intptr_t;
typedef unsigned long int       uintptr_t;





 
typedef	unsigned char	u_int8_t;
typedef	unsigned short	u_int16_t;
typedef	__uint32_t	u_int32_t;






 












 
typedef	long	hostid_t;




 








 
#line 1 "/usr/include/sys/bsd_types.h"















 










 
typedef	struct { int r[1]; } *	physadr;
typedef	unsigned char	unchar;
typedef	unsigned char	u_char;
typedef	unsigned short	ushort;
typedef	unsigned short	u_short;
typedef	unsigned int	uint;
typedef	unsigned int	u_int;
typedef	unsigned long	ulong;
typedef	unsigned long	u_long;
typedef	struct	_quad { long val[2]; } quad;






#line 1 "/usr/include/sys/select.h"















 
 
 
 

 
 
 
 











 






 







typedef	long	fd_mask_t;
typedef	unsigned long	ufd_mask_t;









typedef	struct fd_set {
	fd_mask_t	fds_bits[(((1024)+(((int)(sizeof(fd_mask_t) * 8))-1))/((int)(sizeof(fd_mask_t) * 8)))];
} fd_set;





#line 1 "/usr/include/string.h"
#line 7 "/usr/include/string.h"
















 
 
 
 

 
 
 
 





 


#line 49 "/usr/include/string.h"







 
extern void *memcpy(void *, const void *, size_t);
extern void *memmove(void *, const void *, size_t);
extern char *strcpy(char *, const char *);
extern char *strncpy(char *, const char *, size_t);
extern char *strcat(char *, const char *);
extern char *strncat(char *, const char *, size_t);
extern void *memccpy(void *, const void *, int, size_t);
extern int memcmp(const void *, const void *, size_t);
extern int strcmp(const char *, const char *);
extern int strcoll(const char *, const char *);
extern int strncmp(const char *, const char *, size_t);
extern size_t strxfrm(char *, const char *, size_t);
extern void *memchr(const void *, int, size_t);
extern char *strchr(const char *, int);
extern size_t strcspn(const char *, const char *);
#pragma int_to_unsigned strcspn
extern char *strpbrk(const char *, const char *);
extern char *strrchr(const char *, int);
extern size_t strspn(const char *, const char *);
#pragma int_to_unsigned strspn
extern char *strstr(const char *, const char *);
extern char *strtok(char *, const char *);
extern void *memset(void *, int, size_t);
extern char *strerror(int);
extern size_t strlen(const char *);
#pragma int_to_unsigned strlen


extern int ffs(int);
 
extern int strcasecmp(const char *, const char *);
extern int strncasecmp(const char *, const char *, size_t);



extern char *strdup(const char *);



extern char *strtok_r(char *, const char *, char **);





 




#pragma intrinsic (strcpy)  
#pragma intrinsic (strcmp)  
#pragma intrinsic (strlen)  



#line 71 "/usr/include/sys/select.h"








 











typedef	long	fd_mask;







#line 45 "/usr/include/sys/bsd_types.h"

#line 336 "/usr/include/sys/types.h"





typedef __uint64_t k_sigset_t;	 








#line 447 "/usr/include/sys/types.h"

#line 23 "/usr/include/ulocks.h"
#line 1 "/usr/include/stddef.h"
















 
 
 
 

 
 
 
 











typedef int 	ptrdiff_t;





#line 52 "/usr/include/stddef.h"





#line 66 "/usr/include/stddef.h"







#line 24 "/usr/include/ulocks.h"
#line 1 "/usr/include/limits.h"
















 
 
 

 
 
 












 



 
#line 49 "/usr/include/limits.h"




#line 67 "/usr/include/limits.h"












 

#line 95 "/usr/include/limits.h"




 
#line 108 "/usr/include/limits.h"






 


 
#line 131 "/usr/include/limits.h"


 








#line 149 "/usr/include/limits.h"



 










 




















#line 194 "/usr/include/limits.h"










 







 
#line 224 "/usr/include/limits.h"

#line 232 "/usr/include/limits.h"

#line 244 "/usr/include/limits.h"








 
#line 265 "/usr/include/limits.h"













				 




				 











typedef union _h_val {

        unsigned long i[2];




        double d;
} _h_val;

extern const _h_val __huge_val;





#line 27 "/usr/include/ulocks.h"







 




 




 
 







 

 
#line 78 "/usr/include/ulocks.h"

 





 
#line 98 "/usr/include/ulocks.h"

 
#line 106 "/usr/include/ulocks.h"



extern int _utrace;		 
extern int _uerror;		 



 
typedef void usptr_t;



 
typedef struct lockmeter_s {
	int	lm_spins;			 
	int	lm_tries;			 
	int	lm_hits;			 
} lockmeter_t;

typedef struct lockdebug_s {
	pid_t	ld_owner_pid;			 
} lockdebug_t;

typedef void *ulock_t;				 



 
typedef void usema_t;

 
typedef struct hist_s {
	usema_t			*h_sem;		 
	int			h_op;		 
	pid_t			h_pid;		 
	int			h_scnt;		 
	pid_t			h_wpid;		 
	char			*h_cpc;		 
	struct hist_s		*h_next;	 
	struct hist_s		*h_last;	 
} hist_t;

typedef struct histptr_s {
	hist_t	*hp_current;			 
	int	hp_entries;			 
	int	hp_errors;			 
} histptr_t;

typedef struct semameter_s { 
	int	sm_phits;	 
	int	sm_psemas;	 
	int	sm_vsemas;	 
	int	sm_vnowait;	 
	int	sm_nwait;	 
	int	sm_maxnwait;	 
} semameter_t;

typedef struct semadebug_s {
	pid_t	sd_owner_pid;	 
	char	*sd_owner_pc;	 
	pid_t	sd_last_pid;	 
	char	*sd_last_pc;	 
} semadebug_t;



 
typedef struct barrier {
	volatile unsigned char b_inuse;	 
	unsigned char b_count;		 
	unsigned char b_waitcnt;	 
	volatile unsigned char b_spin;	 
	ulock_t b_plock;		 
	usptr_t *b_usptr;		 
} barrier_t;

extern barrier_t *new_barrier(usptr_t *);
extern void init_barrier(barrier_t *);
extern void free_barrier(barrier_t *);
extern void barrier(barrier_t *, unsigned);




 

#line 205 "/usr/include/ulocks.h"



 

extern ptrdiff_t	usconfig(int, ...);
extern usptr_t		*usinit(const char *);
extern void		usdetach(usptr_t *);
extern int		usadd(usptr_t *);
extern void		usputinfo(usptr_t *, void *);
extern void		*usgetinfo(usptr_t *);
extern int		uscasinfo(usptr_t *, void *, void *);

 
extern void		*usmalloc(size_t, usptr_t *);
extern void		usfree(void *, usptr_t *);
extern void		*usrealloc(void *, size_t, usptr_t *);
extern void		*usrecalloc(void *, size_t, size_t, usptr_t *);
extern void		*uscalloc(size_t, size_t, usptr_t *);
extern struct mallinfo	usmallinfo(usptr_t *);
extern int		usmallopt(int, int, usptr_t *);
extern size_t		usmallocblksize(void *, usptr_t *);
extern void		*usmemalign(size_t, size_t, usptr_t *);

 
extern ulock_t 		(*_nlock)(usptr_t *);
extern int		(*_ilock)(ulock_t);
extern void		(*_freelock)(ulock_t, usptr_t *);
extern int		(*_wlock)(ulock_t, unsigned);
extern int		(*_clock)(ulock_t, unsigned);
extern int		(*_lock)(ulock_t);
extern int		(*_ulock)(ulock_t);
extern int		(*_tlock)(ulock_t);
extern int		(*_ctlock)(ulock_t, int, ...);
extern int		(*_dlock)(ulock_t, FILE *, const char *);
extern int		(*_cas)(void *, ptrdiff_t, ptrdiff_t, usptr_t *);
extern int		(*_cas32)(void *, int32_t, int32_t, usptr_t *);

 
extern usema_t		*usnewsema(usptr_t *, int);
extern int 		usinitsema(usema_t *, int);
extern int		uspsema(usema_t *);
extern int		usvsema(usema_t *);
extern int		uscpsema(usema_t *);
extern void		usfreesema(usema_t *, usptr_t *);
extern int		ustestsema(usema_t *);
extern int		usctlsema(usema_t *, int, ...);
extern int		usdumpsema(usema_t *, FILE *, const char *);
extern usema_t		*usnewpollsema(usptr_t *, int);
extern int		usfreepollsema(usema_t *, usptr_t *);
extern int		usopenpollsema(usema_t *, mode_t);
extern int		usclosepollsema(usema_t *);



#line 287 "/usr/include/ulocks.h"





#line 1 "/usr/include/task.h"










 











 
#line 1 "/usr/include/ulocks.h"










 
#line 28 "/usr/include/task.h"
#line 1 "/usr/include/sys/prctl.h"










 



 












 
 







 


 
struct prda_sys {
	pid_t		t_pid;		 
	__uint32_t	t_hint;		 
	__uint32_t	t_dlactseq;	 
	__uint32_t	t_fpflags;	 
	__uint32_t	t_prid;		 
	__uint32_t	t_dlendseq;      
	__uint64_t	t_pancake[5]; 
	pid_t		t_rpid;		 
	__int32_t	t_resched;	 
	__uint32_t	t_unused[8];
	
	


 
    	__uint32_t	t_cpu;		 

	


 
	__uint32_t	t_flags;	 
	k_sigset_t	t_hold;		 
};

struct prda {
	char unused[2048];
	union {
		char fill[512];
	} sys2_prda;
	union {
		char fill[512];
	} lib2_prda;
	union {
		char fill[512];
	} usr2_prda;

	union {
		char fill[128];
		struct prda_sys prda_sys;
	} sys_prda;
	union {
		char fill[256];
	} lib_prda;
	union {
		char fill[128];
	} usr_prda;
};







 

struct prattach_args_t {
	__int64_t	local_vaddr;	 
	__int64_t	vaddr;		 
	pid_t		pid;		 
	__uint32_t	prots;		 
	__uint32_t	flags;		 
};

struct prattach_results_t {
	__int64_t	local_vaddr;	 
	__int64_t	region_base;	 
	__int64_t	region_size;	 
	__uint32_t	prots;		 
};

#line 121 "/usr/include/sys/prctl.h"



 


int blockproc(pid_t);
int unblockproc(pid_t);
int setblockproccnt(pid_t, int);
int blockprocall(pid_t);
int unblockprocall(pid_t);
int setblockproccntall(pid_t, int);
ptrdiff_t prctl(unsigned, ...);
int sproc(void (*)(void *), unsigned, ...);
int sprocsp(void (*)(void *, size_t), unsigned, void *, caddr_t, size_t);
int nsproc(void (*)(void *, size_t), unsigned, void *, caddr_t, size_t);










 
#line 165 "/usr/include/sys/prctl.h"



 
#line 178 "/usr/include/sys/prctl.h"

 



 
#line 192 "/usr/include/sys/prctl.h"



#line 216 "/usr/include/sys/prctl.h"

 





 







#line 29 "/usr/include/task.h"





 
typedef int tid_t;
struct prda_lib {
	tid_t		t_tid;
	int		t_errno;

	 
	int		auto_mp_id;	 
	char		*fpe_data_ptr;	 
	char		*pixie_data_ptr; 
	int		compiler_extra[1]; 

	 
	void		*glx_client;
	void		*ogl_context;
	void		*ogl_dispatch[7];

	 
	void		*speedshop_data_ptr[5];

	 
	int		pthread_id;
	int		pthread_cancel;	 
	void 		*pthread_data[6];
};

 
extern char __prda_lib_sz[257 - sizeof(struct prda_lib)];









 
typedef volatile struct tskblk {
	void		(*t_entry)(void *);	 
	void		*t_arg;		 
	tid_t		t_tid;		 
	pid_t		t_pid;		 
	unsigned	t_options;	 
	unsigned	t_flags;	 
	char		*t_name;	 
	struct tskblk	*t_link;	 
} tskblk_t;

 

 


extern tskblk_t *_findtask(tid_t, tskblk_t **);



 
extern tid_t taskcreate(char *, void (*)(void *), void *, int);
extern int taskdestroy(tid_t);
extern int taskctl(tid_t, unsigned, ...);
extern int taskblock(tid_t);
extern int taskunblock(tid_t);
extern int tasksetblockcnt(tid_t, int);

 
typedef struct tskhdr {
	usptr_t		*t_usptr;	 
	ulock_t		t_listlock;	 
	tskblk_t	*t_list;	 
} tskhdr_t;
extern tskhdr_t _taskheader;



 

 
typedef struct mlibhdr {
	ulock_t		*m_listlock;	 
	tid_t		m_list[256];	 
	struct barrier	*m_sbar;	 
	volatile unsigned short	m_lcount;	 
	unsigned short	m_pcount;	 
	ulock_t		m_glock;	 
	unsigned	m_gcount;	 
	ulock_t		m_gcountlock;	 
} mlibhdr_t;

extern int 		m_fork(void (*)(), ...);
extern int 		m_park_procs(void);
extern int 		m_rele_procs(void);
extern void 		m_sync(void);
extern int 		m_kill_procs(void);
extern int		m_get_myid(void);
extern int		m_set_procs(int);
extern int		m_get_numprocs(void);
extern unsigned		m_next(void);
extern void 		m_lock(void);		
extern void 		m_unlock(void);	









#line 293 "/usr/include/ulocks.h"

#line 4 "test_ukey2.c"

 

 
#line 1 "../../include/ukey.h"












































 

#line 1 "../../include/thrsys.h"






#line 18 "../../include/thrsys.h"

#line 48 "../../include/ukey.h"

#line 66 "../../include/ukey.h"



typedef pid_t ukey_thr_t;
typedef int ukey_t;



#line 82 "../../include/ukey.h"

 
#line 1 "/usr/include/sys/resource.h"






 













 


struct timeval {



        time_t  tv_sec;          
        long    tv_usec;         
};





 
struct __irix5_timeval {
        __int32_t    tv_sec;          
        __int32_t    tv_usec;         
};




 









 




struct	rusage {
	struct timeval ru_utime;	 
	struct timeval ru_stime;	 
	long	ru_maxrss;

	long	ru_ixrss;		 
	long	ru_idrss;		 
	long	ru_isrss;		 
	long	ru_minflt;		 
	long	ru_majflt;		 
	long	ru_nswap;		 
	long	ru_inblock;		 
	long	ru_oublock;		 
	long	ru_msgsnd;		 
	long	ru_msgrcv;		 
	long	ru_nsignals;		 
	long	ru_nvcsw;		 
	long	ru_nivcsw;		 

};



 
#line 93 "/usr/include/sys/resource.h"



#line 104 "/usr/include/sys/resource.h"








typedef __uint64_t rlim_t;




struct rlimit {
	rlim_t	rlim_cur;		 
	rlim_t	rlim_max;		 
};


typedef __uint64_t rlim64_t;

struct rlimit64 {
	rlim64_t	rlim_cur;
	rlim64_t	rlim_max;		
};		


#line 150 "/usr/include/sys/resource.h"

extern int getrlimit(int, struct rlimit *);
extern int setrlimit(int, const struct rlimit *);
extern int getpriority(int, id_t);
extern int setpriority(int, id_t, int);
extern int getrusage(int, struct rusage *);


extern int getrlimit64(int, struct rlimit64 *);
extern int setrlimit64(int, const struct rlimit64 *);








#line 85 "../../include/ukey.h"







typedef struct ukey_prda_user {
        signed long ukey_magicid;  
        void * ukey_key1[((sizeof(((struct prda *)0x00200000L)->usr_prda . fill))/sizeof(void *)-2)];
        void ** ukey_key2;
} ukey_prda_user_t;


 

#line 108 "../../include/ukey.h"






int sproc_ukey_createkey(ukey_t *pkey);
int sproc_ukey_setval(ukey_t key, const void *val);
void * sproc_ukey_getval(ukey_t key);
void ukey_setkeymax(int max);


ukey_thr_t sproc_ukey_thrcreate(void (*start_routine)(void), short id);
int sproc_ukey_setid(short id);

#line 9 "test_ukey2.c"

ukey_t key[100];

void setukey()
{
 	int i;
	int myid=( (short)((((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_magicid)&((signed long)((unsigned short)-1))) );

	for (i=myid*10; i<myid*10+10;i++) {
		 
		sproc_ukey_createkey(&(key[i]));
		( ((key[i])>((sizeof(((struct prda *)0x00200000L)->usr_prda . fill))/sizeof(void *)-2)) ? ( ((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_key2[(key[i])-((sizeof(((struct prda *)0x00200000L)->usr_prda . fill))/sizeof(void *)-2)]=((void *)i) ) : ( ((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_key1[(key[i])-1]=((void *)i) ) );
	}
	( ((100)>((sizeof(((struct prda *)0x00200000L)->usr_prda . fill))/sizeof(void *)-2)) ? ( ((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_key2[(100)-((sizeof(((struct prda *)0x00200000L)->usr_prda . fill))/sizeof(void *)-2)]=((void *)( (short)((((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_magicid)&((signed long)((unsigned short)-1))) )) ) : ( ((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_key1[(100)-1]=((void *)( (short)((((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_magicid)&((signed long)((unsigned short)-1))) )) ) );
	return;
}

void verify()
{
	int i;
	int myid=( (short)((((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_magicid)&((signed long)((unsigned short)-1))) );

	for (i=myid*10; i<myid*10+10;i++)
		printf("key[%d]=%d, val=%d\n", i, key[i], ( ((key[i])>((sizeof(((struct prda *)0x00200000L)->usr_prda . fill))/sizeof(void *)-2)) ? ( ((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_key2[(key[i])-((sizeof(((struct prda *)0x00200000L)->usr_prda . fill))/sizeof(void *)-2)] ) : ( ((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_key1[(key[i])-1] ) ));

	printf("Is %d==%d?\n", ( (short)((((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_magicid)&((signed long)((unsigned short)-1))) ), ( ((100)>((sizeof(((struct prda *)0x00200000L)->usr_prda . fill))/sizeof(void *)-2)) ? ( ((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_key2[(100)-((sizeof(((struct prda *)0x00200000L)->usr_prda . fill))/sizeof(void *)-2)] ) : ( ((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_key1[(100)-1] ) ));
	return;
}

void test(void)
{
	setukey();
	verify();

	return;
}


main()
{
	ukey_thr_t threads[10];
	int i;

	for (i=0; i<10; i++)
		threads[i]=0;

	usconfig(1, 64);
	for (i=0; i<10;i++)
		if ((threads[i]=sproc_ukey_thrcreate(&test, (short)i))==0) {
			fprintf((&__iob[2]), "thread creation failed\n");
			 
		}
	
	for (i=0; i<10; i++)
		if (threads[i])
			waitpid(threads[i], 0L, 0L);
		
}
#line 1 "../ukey_sproc.c"
 









 
#line 1 "/usr/include/strings.h"







 




 
#line 1 "/usr/include/standards.h"

















 































 





 



















 
#line 86 "/usr/include/standards.h"












 











 











 






 












 










 





 


#line 15 "/usr/include/strings.h"
#line 1 "/usr/include/sys/types.h"















 
 
 

 
 
 






#line 1 "/usr/include/sgidefs.h"










 























 






 





 









 


		 










 



































 











 






 
#line 135 "/usr/include/sgidefs.h"

typedef int __int32_t;
typedef unsigned  __uint32_t;

#line 145 "/usr/include/sgidefs.h"



































 

	 
typedef long long __int64_t;
typedef unsigned long long  __uint64_t;

#line 215 "/usr/include/sgidefs.h"




typedef __int32_t __psint_t;
typedef __uint32_t __psunsigned_t;










 
#line 239 "/usr/include/sgidefs.h"

 
typedef __int32_t __scint_t;
typedef __uint32_t __scunsigned_t;









#line 31 "/usr/include/sys/types.h"

 
typedef unsigned char   uchar_t;
typedef unsigned short  ushort_t;
typedef unsigned int    uint_t;
typedef unsigned long   ulong_t;

 
typedef	char *		addr_t;		 
typedef	char *		caddr_t;	 

typedef	__int64_t	daddr_t;	 



typedef	long		pgno_t;		 
typedef	__uint32_t	pfn_t;		 
typedef	short		cnt_t;		 



 
typedef __int32_t	pgcnt_t;	 

typedef enum { B_FALSE, B_TRUE } boolean_t;








 


typedef long			id_t;	 
					 
					 
					 
					 





 


typedef ulong_t	major_t;	 
typedef ulong_t	minor_t;	 
















 
typedef	ushort_t o_mode_t;		 
typedef short	o_dev_t;		 
typedef	ushort_t o_uid_t;		 
typedef	o_uid_t	o_gid_t;		 
typedef	short	o_nlink_t;		 
typedef short	o_pid_t;		 
typedef __uint32_t o_ino_t;		 


typedef	unsigned long	mode_t;		 
typedef	unsigned long	dev_t;		 
typedef	long		uid_t;
typedef	long		gid_t;
typedef unsigned long	nlink_t;	 
typedef long		pid_t;		 
#line 123 "/usr/include/sys/types.h"


typedef	__uint64_t	ino_t;		 



typedef __uint64_t	ino64_t;	 






typedef __int64_t	off_t;		 



typedef	__int64_t	off64_t;	 

typedef __scint_t	__scoff_t;	 

typedef __scoff_t	scoff_t;	 



typedef	__int64_t	blkcnt_t;	 
typedef	__uint64_t	fsblkcnt_t;	 
typedef	__uint64_t	fsfilcnt_t;	 






typedef	long		swblk_t;
typedef	unsigned long	paddr_t;	 
typedef	int		key_t;		 
typedef	unsigned char	use_t;		 
typedef	short		sysid_t;
typedef	short		index_t;
typedef unsigned int 	lock_t;		 
typedef	signed char	cpuid_t;	 
typedef	unsigned char	pri_t;		 
typedef __uint64_t	accum_t;	 
typedef __int64_t	prid_t;		 
typedef __int64_t	ash_t;		 




typedef unsigned int size_t;









typedef int    ssize_t;









typedef	long		time_t;		 









typedef	long		clock_t;  









typedef long wchar_t;








typedef int             clockid_t;



typedef int		timer_t;







 
typedef	unsigned int	useconds_t;





 
typedef __scunsigned_t	bitnum_t;	 
typedef __scunsigned_t	bitlen_t;	 


typedef int processorid_t;		 
typedef int toid_t;			 
typedef	long *qaddr_t;		       
typedef __uint32_t inst_t;		 

 






typedef __uint64_t machreg_t;


 






typedef __uint64_t fpreg_t;





 




typedef signed char             int8_t;
typedef unsigned char           uint8_t;
typedef signed short            int16_t;
typedef unsigned short          uint16_t;
typedef signed int              int32_t;
typedef unsigned int            uint32_t;
typedef __int64_t 		int64_t;
typedef __uint64_t		uint64_t;
typedef __int64_t 		intmax_t;
typedef __uint64_t		uintmax_t;
typedef signed long int         intptr_t;
typedef unsigned long int       uintptr_t;





 
typedef	unsigned char	u_int8_t;
typedef	unsigned short	u_int16_t;
typedef	__uint32_t	u_int32_t;






 












 
typedef	long	hostid_t;




 








 
#line 1 "/usr/include/sys/bsd_types.h"















 










 
typedef	struct { int r[1]; } *	physadr;
typedef	unsigned char	unchar;
typedef	unsigned char	u_char;
typedef	unsigned short	ushort;
typedef	unsigned short	u_short;
typedef	unsigned int	uint;
typedef	unsigned int	u_int;
typedef	unsigned long	ulong;
typedef	unsigned long	u_long;
typedef	struct	_quad { long val[2]; } quad;






#line 1 "/usr/include/sys/select.h"















 
 
 
 

 
 
 
 











 






 







typedef	long	fd_mask_t;
typedef	unsigned long	ufd_mask_t;









typedef	struct fd_set {
	fd_mask_t	fds_bits[(((1024)+(((int)(sizeof(fd_mask_t) * 8))-1))/((int)(sizeof(fd_mask_t) * 8)))];
} fd_set;





#line 1 "/usr/include/string.h"
#line 7 "/usr/include/string.h"
















 
 
 
 

 
 
 
 





 


#line 49 "/usr/include/string.h"







 
extern void *memcpy(void *, const void *, size_t);
extern void *memmove(void *, const void *, size_t);
extern char *strcpy(char *, const char *);
extern char *strncpy(char *, const char *, size_t);
extern char *strcat(char *, const char *);
extern char *strncat(char *, const char *, size_t);
extern void *memccpy(void *, const void *, int, size_t);
extern int memcmp(const void *, const void *, size_t);
extern int strcmp(const char *, const char *);
extern int strcoll(const char *, const char *);
extern int strncmp(const char *, const char *, size_t);
extern size_t strxfrm(char *, const char *, size_t);
extern void *memchr(const void *, int, size_t);
extern char *strchr(const char *, int);
extern size_t strcspn(const char *, const char *);
#pragma int_to_unsigned strcspn
extern char *strpbrk(const char *, const char *);
extern char *strrchr(const char *, int);
extern size_t strspn(const char *, const char *);
#pragma int_to_unsigned strspn
extern char *strstr(const char *, const char *);
extern char *strtok(char *, const char *);
extern void *memset(void *, int, size_t);
extern char *strerror(int);
extern size_t strlen(const char *);
#pragma int_to_unsigned strlen


extern int ffs(int);
 
extern int strcasecmp(const char *, const char *);
extern int strncasecmp(const char *, const char *, size_t);



extern char *strdup(const char *);



extern char *strtok_r(char *, const char *, char **);





 




#pragma intrinsic (strcpy)  
#pragma intrinsic (strcmp)  
#pragma intrinsic (strlen)  



#line 71 "/usr/include/sys/select.h"








 











typedef	long	fd_mask;







#line 45 "/usr/include/sys/bsd_types.h"

#line 336 "/usr/include/sys/types.h"





typedef __uint64_t k_sigset_t;	 








#line 447 "/usr/include/sys/types.h"

#line 16 "/usr/include/strings.h"


 


#line 27 "/usr/include/strings.h"

extern int	bcmp(const void *, const void *, size_t);
extern void	bcopy(const void *, void *, size_t);
extern void	bzero(void *, size_t);
extern char	*index(const char *, int);
extern char	*rindex(const char *, int);






#line 13 "../ukey_sproc.c"
#line 1 "/usr/include/stdio.h"
#line 7 "/usr/include/stdio.h"
















 
 
 

 
 
 





 




#line 49 "/usr/include/stdio.h"


typedef __int64_t	fpos_t;
#line 59 "/usr/include/stdio.h"
 
typedef	__int64_t	fpos64_t;





 


typedef char *va_list;













#line 89 "/usr/include/stdio.h"







#line 107 "/usr/include/stdio.h"










#line 123 "/usr/include/stdio.h"
















typedef struct	 








 
__file_s

{

	int		_cnt;	 




	unsigned char	*_ptr;	 
	unsigned char	*_base;	 




	unsigned char	_flag;	 
	unsigned char	_o_file;	 
	unsigned short	_file;	 




} FILE;

extern FILE		__iob[100];	
extern FILE		*_lastbuf;
extern unsigned char 	*_bufendtab[];
extern unsigned char	 _sibuf[], _sobuf[];

extern int	remove(const char *);
extern int	rename(const char *, const char *);
extern FILE	*tmpfile(void);
extern char	*tmpnam(char *);
extern int	fclose(FILE *);
extern int	fflush(FILE *);
extern FILE	*fopen(const char *, const char *);
extern FILE	*freopen(const char *, const char *, FILE *);
extern void	setbuf(FILE *, char *);
extern int	setvbuf(FILE *, char *, int, size_t);
 
extern int	fprintf(FILE *, const char *, ...);
 
extern int	fscanf(FILE *, const char *, ...);
 
extern int	printf(const char *, ...);
 
extern int	scanf(const char *, ...);
 
extern int	sprintf(char *, const char *, ...);
 
extern int	sscanf(const char *, const char *, ...);
extern int	vfprintf(FILE *, const char *,   char *);
extern int	vprintf(const char *,   char *);
extern int	vsprintf(char *, const char *,   char *);


#pragma intrinsic (printf)
#pragma intrinsic (fprintf)
#pragma intrinsic (sprintf)
#pragma intrinsic (scanf)
#pragma intrinsic (fscanf)
#pragma intrinsic (sscanf)


extern int	fgetc(FILE *);
extern char	*fgets(char *, int, FILE *); 
extern int	fputc(int, FILE *);
extern int	fputs(const char *, FILE *);
extern int	getc(FILE *);
extern int	getchar(void);
extern char	*gets(char *);
extern int	putc(int, FILE *);
extern int	putchar(int);
extern int	puts(const char *);
extern int	ungetc(int, FILE *);
extern size_t	fread(void *, size_t, size_t, FILE *);
#pragma int_to_unsigned fread
extern size_t	fwrite(const void *, size_t, size_t, FILE *);
#pragma int_to_unsigned fwrite
extern int	fgetpos(FILE *, fpos_t *);
extern int	fseek(FILE *, long, int);
extern int	fsetpos(FILE *, const fpos_t *);
extern long	ftell(FILE *);
extern void	rewind(FILE *);
extern void	clearerr(FILE *);
extern int	feof(FILE *);
extern int	ferror(FILE *);
extern void	perror(const char *);

extern int	__filbuf(FILE *);	
extern int	__flsbuf(int, FILE *);	


	 
extern FILE    *fdopen(int, const char *);
extern int	fileno(FILE *);



	 
extern void	flockfile(FILE *);
extern int	ftrylockfile(FILE *);
extern void	funlockfile(FILE *);
extern int	getc_unlocked(FILE *);
extern int	putc_unlocked(int, FILE *);
extern int	getchar_unlocked(void);
extern int	putchar_unlocked(int);



extern FILE	*popen(const char *, const char *);
extern int	pclose(FILE *);


	 
#line 1 "/usr/include/getopt.h"
#line 7 "/usr/include/getopt.h"


















 



extern int	getopt(int, char *const *, const char *);

extern char	*optarg;
extern int	opterr;
extern int	optind;
extern int	optopt;







 


extern int	getsubopt(char **, char *const *, char **);
extern void	getoptreset(void);






#line 265 "/usr/include/stdio.h"
extern char	*ctermid(char *);
extern char	*cuserid(char *);
extern char	*tempnam(const char *, const char *);
extern int	getw(FILE *);
extern int	putw(int, FILE *);




	 
extern char	*mktemp(char *);
extern int	mkstemp(char *);
extern int	setbuffer(FILE *, char *, int);
extern int	setlinebuf(FILE *);
extern int	system(const char *);

	 
extern int	fgetpos64(FILE *, fpos64_t *);
 
extern int	fseek64(FILE *, __int64_t, int);
extern int	fsetpos64(FILE *, const fpos64_t *);
 
extern __int64_t ftell64(FILE *);



extern int	__semputc(int, FILE *);
extern int	__semgetc(FILE *);
extern int	__us_rsthread_stdio;



extern char	*ctermid_r(char *);














 

 





 




 
#line 337 "/usr/include/stdio.h"

 
#line 348 "/usr/include/stdio.h"

#line 393 "/usr/include/stdio.h"





#line 14 "../ukey_sproc.c"
#line 1 "/usr/include/stdlib.h"
#line 7 "/usr/include/stdlib.h"
















 
 
 

 
 
 



 







 



 


#line 65 "/usr/include/stdlib.h"






 




#line 88 "/usr/include/stdlib.h"


typedef	struct {
	 int	quot;
	 int	rem;
	} div_t;

typedef struct {
	 long	quot;
	 long	rem;
	} ldiv_t;


typedef struct {
	 long long	quot;
	 long long	rem;
	} lldiv_t;


#line 116 "/usr/include/stdlib.h"

#line 128 "/usr/include/stdlib.h"

#line 138 "/usr/include/stdlib.h"

extern unsigned char 	__ctype[];	



 
extern double atof(const char *);
extern int atoi(const char *);
extern long int atol(const char *);
extern double strtod(const char *, char **);
extern long int strtol(const char *, char **, int);
extern unsigned long int strtoul(const char *, char **, int);
extern int rand(void);
extern void srand(unsigned int);
extern void *calloc(size_t, size_t);
extern void free(void *);
extern void *malloc(size_t);
extern void *realloc(void *, size_t);
extern void abort(void);
extern int atexit(void (*)(void));
extern void exit(int);
extern char *getenv(const char *);
extern int system(const char *);
extern void *bsearch(const void *, const void *, size_t, size_t,
	int (*)(const void *, const void *));
extern void qsort(void *, size_t, size_t,
	int (*)(const void *, const void *));

#line 172 "/usr/include/stdlib.h"
extern int abs(int);


extern div_t div(int, int);
extern long int labs(long);
extern ldiv_t ldiv(long, long);
extern int mbtowc(wchar_t *, const char *, size_t);
extern int mblen(const char *, size_t);
extern int wctomb(char *, wchar_t);
extern size_t mbstowcs(wchar_t *, const char *, size_t);
extern size_t wcstombs(char *, const wchar_t *, size_t);


	 
extern int putenv(const char *);
extern double	drand48(void);
extern double	erand48(unsigned short [3]);
extern long	lrand48(void);
extern long	nrand48(unsigned short [3]);
extern long	mrand48(void);
extern long	jrand48(unsigned short [3]);
extern void	srand48(long);
extern void	lcong48(unsigned short int [7]);
extern void     setkey(const char *);
extern unsigned short * seed48(unsigned short int [3]);



	 
extern long a64l(const char *);
extern char *ecvt(double, int, int *, int *);
extern char *fcvt(double, int, int *, int *);
extern char *gcvt(double, int, char *);
extern int getsubopt(char **, char * const *, char **);
extern int grantpt(int);
extern char *initstate(unsigned int, char *, int);
extern char *l64a(long);
extern char *mktemp(char *);
extern int mkstemp(char *);
extern char *ptsname(int);
extern long random(void);
extern char *realpath(const char *, char *);
extern int ttyslot(void);
extern int unlockpt(int);
extern void *valloc(size_t);



extern int rand_r(unsigned int *);



	 
extern int dup2(int, int);
extern char *getcwd(char *, size_t);
extern char *getlogin(void);

extern char *getpass(const char *);
extern int getpw(int, char *);
extern int isatty(int);
extern void l3tol(long *, const char *, int);
extern void ltol3(char *, const long *, int);
extern void *memalign(size_t, size_t);
extern void swab(const void *, void *, ssize_t);
extern char *ttyname(int);

	 

extern long double atold(const char *);
extern long double strtold(const char *nptr, char **endptr);
extern char *qecvt(long double, int, int *, int *);
extern char *qfcvt(long double, int, int *, int *);
extern char *qgcvt(long double, int, char *);

extern long long int atoll(const char *);
extern long long int strtoll(const char *, char **, int);
extern unsigned long long int strtoull(const char *, char **, int);
extern long long llabs(long long);
extern lldiv_t lldiv(long long, long long);



extern char *ecvt_r(double, int, int *, int *, char *);
extern char *fcvt_r(double, int, int *, int *, char *);

extern char *qecvt_r(long double, int, int *, int *, char *);
extern char *qfcvt_r(long double, int, int *, int *, char *);





#line 15 "../ukey_sproc.c"


 




 
typedef int sproc_ukey_t;

static sproc_ukey_t nkey=0;  

 
  
 




static int sproc_key_max=1024;

#line 1 "/usr/include/sys/resource.h"






 













 


struct timeval {



        time_t  tv_sec;          
        long    tv_usec;         
};





 
struct __irix5_timeval {
        __int32_t    tv_sec;          
        __int32_t    tv_usec;         
};




 









 




struct	rusage {
	struct timeval ru_utime;	 
	struct timeval ru_stime;	 
	long	ru_maxrss;

	long	ru_ixrss;		 
	long	ru_idrss;		 
	long	ru_isrss;		 
	long	ru_minflt;		 
	long	ru_majflt;		 
	long	ru_nswap;		 
	long	ru_inblock;		 
	long	ru_oublock;		 
	long	ru_msgsnd;		 
	long	ru_msgrcv;		 
	long	ru_nsignals;		 
	long	ru_nvcsw;		 
	long	ru_nivcsw;		 

};



 
#line 93 "/usr/include/sys/resource.h"



#line 104 "/usr/include/sys/resource.h"








typedef __uint64_t rlim_t;




struct rlimit {
	rlim_t	rlim_cur;		 
	rlim_t	rlim_max;		 
};


typedef __uint64_t rlim64_t;

struct rlimit64 {
	rlim64_t	rlim_cur;
	rlim64_t	rlim_max;		
};		


#line 150 "/usr/include/sys/resource.h"

extern int getrlimit(int, struct rlimit *);
extern int setrlimit(int, const struct rlimit *);
extern int getpriority(int, id_t);
extern int setpriority(int, id_t, int);
extern int getrusage(int, struct rusage *);


extern int getrlimit64(int, struct rlimit64 *);
extern int setrlimit64(int, const struct rlimit64 *);








#line 38 "../ukey_sproc.c"
#line 1 "/usr/include/sys/prctl.h"










 



 












 
 







 


 
struct prda_sys {
	pid_t		t_pid;		 
	__uint32_t	t_hint;		 
	__uint32_t	t_dlactseq;	 
	__uint32_t	t_fpflags;	 
	__uint32_t	t_prid;		 
	__uint32_t	t_dlendseq;      
	__uint64_t	t_pancake[5]; 
	pid_t		t_rpid;		 
	__int32_t	t_resched;	 
	__uint32_t	t_unused[8];
	
	


 
    	__uint32_t	t_cpu;		 

	


 
	__uint32_t	t_flags;	 
	k_sigset_t	t_hold;		 
};

struct prda {
	char unused[2048];
	union {
		char fill[512];
	} sys2_prda;
	union {
		char fill[512];
	} lib2_prda;
	union {
		char fill[512];
	} usr2_prda;

	union {
		char fill[128];
		struct prda_sys prda_sys;
	} sys_prda;
	union {
		char fill[256];
	} lib_prda;
	union {
		char fill[128];
	} usr_prda;
};







 

struct prattach_args_t {
	__int64_t	local_vaddr;	 
	__int64_t	vaddr;		 
	pid_t		pid;		 
	__uint32_t	prots;		 
	__uint32_t	flags;		 
};

struct prattach_results_t {
	__int64_t	local_vaddr;	 
	__int64_t	region_base;	 
	__int64_t	region_size;	 
	__uint32_t	prots;		 
};

#line 121 "/usr/include/sys/prctl.h"



 
#line 1 "/usr/include/stddef.h"
















 
 
 
 

 
 
 
 











typedef int 	ptrdiff_t;





#line 52 "/usr/include/stddef.h"





#line 66 "/usr/include/stddef.h"







#line 126 "/usr/include/sys/prctl.h"

int blockproc(pid_t);
int unblockproc(pid_t);
int setblockproccnt(pid_t, int);
int blockprocall(pid_t);
int unblockprocall(pid_t);
int setblockproccntall(pid_t, int);
ptrdiff_t prctl(unsigned, ...);
int sproc(void (*)(void *), unsigned, ...);
int sprocsp(void (*)(void *, size_t), unsigned, void *, caddr_t, size_t);
int nsproc(void (*)(void *, size_t), unsigned, void *, caddr_t, size_t);










 
#line 165 "/usr/include/sys/prctl.h"



 
#line 178 "/usr/include/sys/prctl.h"

 



 
#line 192 "/usr/include/sys/prctl.h"



#line 216 "/usr/include/sys/prctl.h"

 





 







#line 39 "../ukey_sproc.c"









typedef struct ukey_prda_user {
	signed long ukey_magicid;  
	void * ukey_key1[((sizeof(((struct prda *)0x00200000L)->usr_prda . fill))/sizeof(void *)-2)];
	void ** ukey_key2;
} ukey_prda_user_t;






typedef struct parm {
	void (*start)(void);
	short id;
} PARM;

void sproc_ukey_setid(short id);

static void sproc_ukey_stub(void *parm)
{
	sproc_ukey_setid( ((PARM *)parm)->id );
	(* ((PARM *)parm)->start)();
	free (parm);
	return;
}
	
pid_t sproc_ukey_thrcreate(void (*start)(void), short id)
{
	PARM *parm;
	pid_t prs;

	if ((id<0)||(id>1000)) {

		fprintf((&__iob[2]), "Illegal ID\n");

		return 0;
	}

	parm=(PARM *)malloc(sizeof(PARM));
	parm->start=start;
	parm->id=id;
	
	 
	if ((prs=sproc(sproc_ukey_stub, 0x00000040, (void *)parm))<0) {
		perror("");
		return 0L;
	}
	else
		return prs;
}

void sproc_ukey_setid(short id)
{

	 
	if (((((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_magicid&(-((signed long)((unsigned short)-1)+1)))!=0) || (( (short)((((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_magicid)&((signed long)((unsigned short)-1))) )!=0)) {
		fprintf((&__iob[2]),"DEBUG, in setid, ID has already been set or data structure corrupted.\n");
		 
	}

	if (id>=1000) {
		fprintf((&__iob[2]),"ID out of range (0-999).\n");
		return;
	}
		
	((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_magicid=(( (((unsigned long)-1)/3*2)&(-((signed long)((unsigned short)-1)+1)))|(signed long)(unsigned short)(id));


	 
	((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_key2=(void **)malloc(sizeof(void *)*(sproc_key_max));
	bzero(((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_key2, sizeof(void *)*(sproc_key_max));

	
	return;
}

short sproc_ukey_getid(void)
{
	short id;

	if ( ((((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_magicid&(-((signed long)((unsigned short)-1)+1)))!=( (((unsigned long)-1)/3*2)&(-((signed long)((unsigned short)-1)+1)))) || ( (id=( (short)((((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_magicid)&((signed long)((unsigned short)-1))) ))>=1000) ) {

		fprintf((&__iob[2]),"DEBUG, in getid, user PRDA data structure corrupted.\n");

		return -1;
	}

	return id;
}

int sproc_ukey_createkey(sproc_ukey_t *pkey)
{
	register sproc_ukey_t tmp;

	 
	tmp=__add_and_fetch(&nkey, 1); 
	 

	if ( tmp>(((sizeof(((struct prda *)0x00200000L)->usr_prda . fill))/sizeof(void *)-2)+(sproc_key_max)) )
		return -1;

	*pkey=tmp;
	return 0;
}

int sproc_ukey_setval(sproc_ukey_t key, void *val)
{






	if ( ((((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_magicid&(-((signed long)((unsigned short)-1)+1)))!=( (((unsigned long)-1)/3*2)&(-((signed long)((unsigned short)-1)+1)))) || (( (short)((((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_magicid)&((signed long)((unsigned short)-1))) )>=1000) ) {
		fprintf((&__iob[2]),"DEBUG, in setval, user PRDA data structure corrupted.\n");
		return -1;
	}


	if (key>((sizeof(((struct prda *)0x00200000L)->usr_prda . fill))/sizeof(void *)-2)) {
#line 174 "../ukey_sproc.c"
		((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_key2[key-((sizeof(((struct prda *)0x00200000L)->usr_prda . fill))/sizeof(void *)-2)]=val;
	}
	else
		((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_key1[key-1]=val;
	
	return 0;
}

void * sproc_ukey_getval(sproc_ukey_t key)
{
	 






	if ( ((((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_magicid&(-((signed long)((unsigned short)-1)+1)))!=( (((unsigned long)-1)/3*2)&(-((signed long)((unsigned short)-1)+1)))) || (( (short)((((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_magicid)&((signed long)((unsigned short)-1))) )>=1000) ) {
		fprintf((&__iob[2]),"DEBUG, in getval, user PRDA data structure corrupted.\n");
		return 0L;
	}


	if (key>((sizeof(((struct prda *)0x00200000L)->usr_prda . fill))/sizeof(void *)-2)) {
#line 204 "../ukey_sproc.c"
		return ((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_key2[key-((sizeof(((struct prda *)0x00200000L)->usr_prda . fill))/sizeof(void *)-2)];
	}
	else
		return ((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_key1[key-1];
}




 
void ukey_setkeymax(int max)
{
	if (((ukey_prda_user_t *)(((struct prda *)0x00200000L)->usr_prda . fill))->ukey_key2)  
		return;

	sproc_key_max=max;
}

