37 #include <sys/types.h> 53 pid_t GetDaemonPid(
void)
61 fd = open(PCSCLITE_RUN_PID, O_RDONLY);
64 char pid_ascii[PID_ASCII_SIZE];
67 r = read(fd, pid_ascii,
sizeof pid_ascii);
70 Log2(PCSC_LOG_CRITICAL,
"Reading " PCSCLITE_RUN_PID
" failed: %s",
75 pid = atoi(pid_ascii);
81 Log2(PCSC_LOG_CRITICAL,
"Can't open " PCSCLITE_RUN_PID
": %s",
89 int SendHotplugSignal(
void)
97 Log2(PCSC_LOG_INFO,
"Send hotplug signal to pcscd (pid=%ld)",
99 if (kill(pid, SIGUSR1) < 0)
101 Log3(PCSC_LOG_CRITICAL,
"Can't signal pcscd (pid=%ld): %s",
102 (
long)pid, strerror(errno));
103 return EXIT_FAILURE ;
118 #define OPENCT_FILE "/var/run/openct/status" 119 int CheckForOpenCT(
void)
125 Log1(PCSC_LOG_CRITICAL,
"File " OPENCT_FILE " found. Remove OpenCT and try again");
136 long int time_sub(
struct timeval *a,
struct timeval *b)
139 r.tv_sec = a -> tv_sec - b -> tv_sec;
140 r.tv_usec = a -> tv_usec - b -> tv_usec;
144 r.tv_usec += 1000000;
147 return r.tv_sec * 1000000 + r.tv_usec;
150 int ThreadCreate(pthread_t * pthThread,
int attributes,
151 PCSCLITE_THREAD_FUNCTION(pvFunction), LPVOID pvArg)
157 ret = pthread_attr_init(&attr);
161 ret = pthread_attr_setdetachstate(&attr,
162 attributes & THREAD_ATTR_DETACHED ? PTHREAD_CREATE_DETACHED : PTHREAD_CREATE_JOINABLE);
167 ret = pthread_attr_getstacksize(&attr, &stack_size);
173 if ((stack_size != 0) && (stack_size < 0x40000))
175 stack_size = 0x40000;
176 ret = pthread_attr_setstacksize(&attr, stack_size);
181 ret = pthread_create(pthThread, &attr, pvFunction, pvArg);
184 pthread_attr_destroy(&attr);
#define OPENCT_FILE
Check is OpenCT is running and display a critical message if it is.
This handles abstract system level calls.
int SYS_Sleep(int)
Makes the current process sleep for some seconds.
long int time_sub(struct timeval *a, struct timeval *b)
return the difference (as long int) in µs between 2 struct timeval r = a - b
This keeps a list of defines for pcsc-lite.