reply(getTextBot(), user, "NS_NETINFO_HEADER");
char tmp[MAXLEN];
struct Table *table;
- table = table_init(2, 18, 0);
+ table = table_init(2, 19, 0);
char *content[2];
content[0] = get_language_string(user, "NS_NETINFO_UPTIME");
content[1] = tmp;
table_add(table, content);
+ #ifdef HAVE_THREADS
+ content[0] = get_language_string(user, "NS_NETINFO_THREADS");
+ sprintf(tmp, "%d (current tid: %lu)", running_threads, syscall(SYS_gettid));
+ content[1] = tmp;
+ table_add(table, content);
+ #endif
+
if(strcmp(revision, ""))
sprintf(tmp, "%s.%d (%s)", NEONSERV_VERSION, patchlevel, revision);
else
static int statistics_requested_lusers = 0;
int statistics_enabled;
TIMEQ_CALLBACK(main_statistics);
+#ifdef HAVE_THREADS
+int running_threads;
+#endif
void cleanup() {
free_sockets();
destroyEvents();
queue_loop();
}
+ running_threads--;
return NULL;
}
#endif
pthread_t tid[worker_threads];
int tid_id = 0;
for(tid_id = 0; tid_id < worker_threads; tid_id++) {
+ running_threads++;
pthread_create(&tid[tid_id], NULL, thread_main, NULL);
}
for(tid_id = 0; tid_id < worker_threads; tid_id++) {
pthread_join(tid[tid_id], NULL);
}
+ running_threads = 0;
#else
time_t socket_wait;
while(running) {
#include <sys/time.h>
#include <time.h>
#ifdef HAVE_THREADS
+#include <pthread.h>
+#include <sys/syscall.h>
#define THREAD_MUTEX_INIT(var) { \
pthread_mutexattr_t mutex_attr; \
pthread_mutexattr_init(&mutex_attr);\
}
#define SYNCHRONIZE(var) pthread_mutex_lock(&var)
#define DESYNCHRONIZE(var) pthread_mutex_unlock(&var)
-#include <pthread.h>
#else
#define THREAD_MUTEX_INIT(var)
#define SYNCHRONIZE(var)
extern time_t start_time;
extern int statistics_enabled;
+#ifdef HAVE_THREADS
+extern int running_threads;
+#endif
int stricmp (const char *s1, const char *s2);
int stricmplen (const char *s1, const char *s2, int len);