diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index 2a51f376d895a14b86f0dc02898e17c8eed46c52..6a053451c5cc774859694dc120641a8617a730d7 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -1488,7 +1488,8 @@ set(CMAKE_MODULE_PATH "${OPENAIR_DIR}/cmake_targets/tools/MODULES" "${CMAKE_MODU add_boolean_option(T_TRACER True "Activate the T tracer" ) include_directories("${OPENAIR_DIR}/common/utils/T") set(T_SOURCE - ${OPENAIR_DIR}/common/utils/T/T.c) + ${OPENAIR_DIR}/common/utils/T/T.c + ${OPENAIR_DIR}/common/utils/T/local_tracer.c) set (T_LIB "-lrt") # Hack on a test of asn1c version (already dirty) diff --git a/common/utils/T/Makefile b/common/utils/T/Makefile index 73c07c7e821dac86aee807526525ef18a757cfea..dcb0d12fab9e638f49e812255e29cf61c058b755 100644 --- a/common/utils/T/Makefile +++ b/common/utils/T/Makefile @@ -1,37 +1,23 @@ CC=gcc -CFLAGS=-Wall -g -pthread -DT_TRACER - -LIBS += -lrt - -PROG=t -OBJS=main.o T.o +CFLAGS=-Wall -g GENIDS=genids GENIDS_OBJS=genids.o -ALL=$(PROG) $(GENIDS) - -all : $(ALL) +all : $(GENIDS) T_messages.txt.h T_IDs.h $(GENIDS): $(GENIDS_OBJS) $(CC) $(CFLAGS) -o $(GENIDS) $(GENIDS_OBJS) -$(PROG): $(OBJS) - $(CC) $(CFLAGS) -o $(PROG) $(OBJS) $(LIBS) - %.o: %.c $(CC) $(CFLAGS) -c -o $@ $< -T.o: T_messages.txt.h - T_messages.txt.h: T_messages.txt xxd -i T_messages.txt > T_messages.txt.h T_IDs.h: $(GENIDS) T_messages.txt ./$(GENIDS) T_messages.txt T_IDs.h -main.o: T.h T_IDs.h T_defs.h - clean: - rm -f *.o $(PROG) $(GENIDS) core T_IDs.h T_messages.txt.h + rm -f *.o $(GENIDS) core T_IDs.h T_messages.txt.h cd tracer && make clean diff --git a/common/utils/T/T.c b/common/utils/T/T.c index 9a9df9418da883f0cd983f0f986eecf4b83774ed..c556a9c2a545e10f636718eaab3a4376a1576d44 100644 --- a/common/utils/T/T.c +++ b/common/utils/T/T.c @@ -1,8 +1,6 @@ #include "T.h" #include "T_messages.txt.h" #include <string.h> -#include <netinet/ip.h> -#include <arpa/inet.h> #include <stdlib.h> #include <unistd.h> #include <pthread.h> @@ -10,6 +8,7 @@ #include <sys/mman.h> #include <sys/stat.h> #include <fcntl.h> +#include <sys/socket.h> /* array used to activate/disactivate a log */ static int T_IDs[T_NUMBER_OF_IDS]; @@ -23,7 +22,6 @@ static int T_socket; */ volatile int _T_freelist_head; volatile int *T_freelist_head = &_T_freelist_head; -int T_busylist_head; T_cache_t *T_cache; static void get_message(int s) @@ -83,36 +81,31 @@ static void new_thread(void *(*f)(void *), void *data) { fprintf(stderr, "pthread_attr_destroy err\n"); exit(1); } } -void T_connect_to_tracer(char *addr, int port) +/* defined in local_tracer.c */ +void T_local_tracer_main(int remote_port, int wait_for_tracer, + int local_socket); + +void T_init(int remote_port, int wait_for_tracer) { - struct sockaddr_in a; + int socket_pair[2]; int s; int T_shm_fd; unsigned char *buf; int len; + int f; - if (strcmp(addr, "127.0.0.1") != 0) { - printf("error: local tracer must be on same host\n"); - abort(); - } + if (socketpair(AF_UNIX, SOCK_STREAM, 0, socket_pair)) + { perror("socketpair"); abort(); } - printf("connecting to local tracer on port %d\n", port); -again: - s = socket(AF_INET, SOCK_STREAM, 0); - if (s == -1) { perror("socket"); exit(1); } - - a.sin_family = AF_INET; - a.sin_port = htons(port); - a.sin_addr.s_addr = inet_addr("127.0.0.1"); - - if (connect(s, (struct sockaddr *)&a, sizeof(a)) == -1) { - perror("connect"); - close(s); - printf("trying again in 1s\n"); - sleep(1); - goto again; + f = fork(); if (f == -1) abort(); + if (f == 0) { + close(socket_pair[1]); + T_local_tracer_main(remote_port, wait_for_tracer, socket_pair[0]); + exit(0); } + close(socket_pair[0]); + s = socket_pair[1]; /* wait for first message - initial list of active T events */ get_message(s); diff --git a/common/utils/T/T.h b/common/utils/T/T.h index 7fb6133fcc9f7aa8ac2532d63d21f345bfd8791b..a5aacb4b4f8e7ba121eb29078992e9a890740829 100644 --- a/common/utils/T/T.h +++ b/common/utils/T/T.h @@ -562,7 +562,7 @@ extern T_cache_t *T_cache; extern int *T_active; -void T_connect_to_tracer(char *addr, int port); +void T_init(int remote_port, int wait_for_tracer); #else /* T_TRACER */ diff --git a/common/utils/T/database.c b/common/utils/T/database.c deleted file mode 100644 index 59d8cbdc852cca264fe2222bb8792954cd920c0d..0000000000000000000000000000000000000000 --- a/common/utils/T/database.c +++ /dev/null @@ -1,325 +0,0 @@ -#include "defs.h" -#include <stdlib.h> -#include <string.h> -#include <stdio.h> -#include <ctype.h> - -typedef struct { - char *name; - char *desc; - char **groups; - int size; - int id; -} id; - -typedef struct { - char *name; - char **ids; - int size; -} group; - -typedef struct { - char *name; - id *i; - int isize; - group *g; - int gsize; -} database; - -typedef struct { - char *data; - int size; - int maxsize; -} buffer; - -typedef struct { - buffer name; - buffer value; -} parser; - -void put(buffer *b, int c) -{ - if (b->size == b->maxsize) { - b->maxsize += 256; - b->data = realloc(b->data, b->maxsize); - if (b->data == NULL) { printf("memory allocation error\n"); exit(1); } - } - b->data[b->size] = c; - b->size++; -} - -void smash_spaces(FILE *f) -{ - int c; - while (1) { - c = fgetc(f); - if (isspace(c)) continue; - if (c == ' ') continue; - if (c == '\t') continue; - if (c == '\n') continue; - if (c == 10 || c == 13) continue; - if (c == '#') { - while (1) { - c = fgetc(f); - if (c == '\n' || c == EOF) break; - } - continue; - } - break; - } - if (c != EOF) ungetc(c, f); -} - -void get_line(parser *p, FILE *f, char **name, char **value) -{ - int c; - p->name.size = 0; - p->value.size = 0; - *name = NULL; - *value = NULL; - smash_spaces(f); - c = fgetc(f); - while (!(c == '=' || isspace(c) || c == EOF)) - { put(&p->name, c); c = fgetc(f); } - if (c == EOF) return; - put(&p->name, 0); - while (!(c == EOF || c == '=')) c = fgetc(f); - if (c == EOF) return; - smash_spaces(f); - c = fgetc(f); - while (!(c == 10 || c == 13 || c == EOF)) - { put(&p->value, c); c = fgetc(f); } - put(&p->value, 0); - if (p->name.size <= 1) return; - if (p->value.size <= 1) return; - *name = p->name.data; - *value = p->value.data; -} - -int group_cmp(const void *_p1, const void *_p2) -{ - const group *p1 = _p1; - const group *p2 = _p2; - return strcmp(p1->name, p2->name); -} - -int id_cmp(const void *_p1, const void *_p2) -{ - const id *p1 = _p1; - const id *p2 = _p2; - return strcmp(p1->name, p2->name); -} - -int string_cmp(const void *_p1, const void *_p2) -{ - char * const *p1 = _p1; - char * const *p2 = _p2; - return strcmp(*p1, *p2); -} - -id *add_id(database *r, char *idname, int i) -{ - if (bsearch(&(id){name:idname}, r->i, r->isize, sizeof(id), id_cmp) != NULL) - { printf("ERROR: ID '%s' declared more than once\n", idname); exit(1); } - if ((r->isize & 1023) == 0) { - r->i = realloc(r->i, (r->isize + 1024) * sizeof(id)); - if (r->i == NULL) { printf("out of memory\n"); exit(1); } - } - r->i[r->isize].name = strdup(idname); - if (r->i[r->isize].name == NULL) { printf("out of memory\n"); exit(1); } - r->i[r->isize].desc = NULL; - r->i[r->isize].groups = NULL; - r->i[r->isize].size = 0; - r->i[r->isize].id = i; - r->isize++; - qsort(r->i, r->isize, sizeof(id), id_cmp); - return (id*)bsearch(&(id){name:idname}, r->i, r->isize, sizeof(id), id_cmp); -} - -group *get_group(database *r, char *group_name) -{ - group *ret; - - ret = bsearch(&(group){name:group_name}, - r->g, r->gsize, sizeof(group), group_cmp); - if (ret != NULL) return ret; - - if ((r->gsize & 1023) == 0) { - r->g = realloc(r->g, (r->gsize + 1024) * sizeof(group)); - if (r->g == NULL) abort(); - } - r->g[r->gsize].name = strdup(group_name); - if (r->g[r->gsize].name == NULL) abort(); - r->g[r->gsize].ids = NULL; - r->g[r->gsize].size = 0; - r->gsize++; - - qsort(r->g, r->gsize, sizeof(group), group_cmp); - - return bsearch(&(group){name:group_name}, - r->g, r->gsize, sizeof(group), group_cmp); -} - -void group_add_id(group *g, char *id) -{ - if ((g->size & 1023) == 0) { - g->ids = realloc(g->ids, (g->size + 1024) * sizeof(char *)); - if (g->ids == NULL) abort(); - } - g->ids[g->size] = id; - g->size++; -} - -void id_add_group(id *i, char *group) -{ - char *g = bsearch(&group, i->groups, i->size, sizeof(char *), string_cmp); - if (g != NULL) return; - - if ((i->size & 1023) == 0) { - i->groups = realloc(i->groups, (i->size+1024) * sizeof(char *)); - if (i->groups == NULL) abort(); - } - i->groups[i->size] = group; - i->size++; - qsort(i->groups, i->size, sizeof(char *), string_cmp); -} - -void add_groups(database *r, id *i, char *groups) -{ - group *g; - if (i == NULL) {printf("ERROR: GROUP line before ID line\n");exit(1);} - while (1) { - char *start = groups; - char *end = start; - while (!isspace(*end) && *end != ':' && *end != 0) end++; - if (end == start) { - printf("bad group line: groups are seperated by ':'\n"); - abort(); - } - if (*end == 0) end = NULL; else *end = 0; - - g = get_group(r, start); - group_add_id(g, i->name); - id_add_group(i, g->name); - - if (end == NULL) break; - end++; - while ((isspace(*end) || *end == ':') && *end != 0) end++; - if (*end == 0) break; - groups = end; - } -} - -void add_desc(id *i, char *desc) -{ - if (i == NULL) {printf("ERROR: DESC line before ID line\n");exit(1);} - i->desc = strdup(desc); if (i->desc == NULL) abort(); -} - -void *parse_database(char *filename) -{ - FILE *in; - parser p; - database *r; - char *name, *value; - id *last_id = NULL; - int i; - - r = calloc(1, sizeof(*r)); if (r == NULL) abort(); - memset(&p, 0, sizeof(p)); - - r->name = strdup(filename); if (r->name == NULL) abort(); - - in = fopen(filename, "r"); if (in == NULL) { perror(filename); abort(); } - - i = 0; - - while (1) { - get_line(&p, in, &name, &value); - if (name == NULL) break; -//printf("%s %s\n", name, value); - if (!strcmp(name, "ID")) { last_id = add_id(r, value, i); i++; } - if (!strcmp(name, "GROUP")) add_groups(r, last_id, value); - if (!strcmp(name, "DESC")) add_desc(last_id, value); - } - - fclose(in); - free(p.name.data); - free(p.value.data); - - return r; -} - -void dump_database(void *_d) -{ - database *d = _d; - int i; - - printf("database %s: %d IDs, %d GROUPs\n", d->name, d->isize, d->gsize); - for (i = 0; i < d->isize; i++) { - int j; - printf("ID %s [%s] [in %d group%s]\n", - d->i[i].name, d->i[i].desc ? d->i[i].desc : "", - d->i[i].size, d->i[i].size > 1 ? "s" : ""); - for (j = 0; j < d->i[i].size; j++) - printf(" in GROUP: %s\n", d->i[i].groups[j]); - } - for (i = 0; i < d->gsize; i++) { - int j; - printf("GROUP %s [size %d]\n", d->g[i].name, d->g[i].size); - for (j = 0; j < d->g[i].size; j++) - printf(" contains ID: %s\n", d->g[i].ids[j]); - } -} - -void list_ids(void *_d) -{ - database *d = _d; - int i; - for (i = 0; i < d->isize; i++) printf("%s\n", d->i[i].name); -} - -void list_groups(void *_d) -{ - database *d = _d; - int i; - for (i = 0; i < d->gsize; i++) printf("%s\n", d->g[i].name); -} - -static int onoff_id(database *d, char *name, int *a, int onoff) -{ - id *i; - i = bsearch(&(id){name:name}, d->i, d->isize, sizeof(id), id_cmp); - if (i == NULL) return 0; - a[i->id] = onoff; - printf("turning %s %s\n", onoff ? "ON" : "OFF", name); - return 1; -} - -static int onoff_group(database *d, char *name, int *a, int onoff) -{ - group *g; - int i; - g = bsearch(&(group){name:name}, d->g, d->gsize, sizeof(group), group_cmp); - if (g == NULL) return 0; - for (i = 0; i < g->size; i++) onoff_id(d, g->ids[i], a, onoff); - return 1; -} - -void on_off(void *_d, char *item, int *a, int onoff) -{ - int done; - database *d = _d; - int i; - if (item == NULL) { - for (i = 0; i < d->isize; i++) a[i] = onoff; - printf("turning %s all traces\n", onoff ? "ON" : "OFF"); - return; - } - done = onoff_group(d, item, a, onoff); - done += onoff_id(d, item, a, onoff); - if (done == 0) { - printf("ERROR: ID/group '%s' not found in database\n", item); - exit(1); - } -} diff --git a/common/utils/T/forward.c b/common/utils/T/forward.c deleted file mode 100644 index 3177e22b2c362b261d7a1791345af7a2b78aa7f4..0000000000000000000000000000000000000000 --- a/common/utils/T/forward.c +++ /dev/null @@ -1,162 +0,0 @@ -#include "defs.h" -#include <stdlib.h> -#include <stdio.h> -#include <netinet/ip.h> -#include <arpa/inet.h> -#include <unistd.h> -#include <pthread.h> -#include <string.h> - -typedef struct databuf { - char *d; - int l; - struct databuf *next; -} databuf; - -typedef struct { - int s; - int sc; - pthread_mutex_t lock; - pthread_mutex_t datalock; - pthread_cond_t datacond; - databuf * volatile head, *tail; -} forward_data; - -static void *data_sender(void *_f) -{ - forward_data *f = _f; - databuf *cur; - char *buf, *b; - int size; - -wait: - if (pthread_mutex_lock(&f->datalock)) abort(); - while (f->head == NULL) - if (pthread_cond_wait(&f->datacond, &f->datalock)) abort(); - cur = f->head; - buf = cur->d; - size = cur->l; - f->head = cur->next; - if (f->head == NULL) f->tail = NULL; - if (pthread_mutex_unlock(&f->datalock)) abort(); - free(cur); - goto process; - -process: - if (pthread_mutex_lock(&f->lock)) abort(); - -int *x = (int*)buf; -if (*x < 0 || *x >= 132) printf("bad id %d\n", *x); -printf("DATA_SENDER sends type %d\n", *x); - - b = buf; - while (size) { - int l = write(f->s, b, size); -printf("DATA_SENDER write buffer %p len %d returns %d\n", b, size, l); - if (l <= 0) { printf("forward error\n"); exit(1); } - size -= l; - b += l; - } - - if (pthread_mutex_unlock(&f->lock)) abort(); - - free(buf); - - goto wait; -} - -static void do_forward(forward_data *f, int from, int to, int lock) -{ - int l, len; - char *b; - char buf[1024]; - while (1) { - len = read(from, buf, 1024); - if (len <= 0) break; - b = buf; - - if (lock) if (pthread_mutex_lock(&f->lock)) abort(); - - while (len) { - l = write(to, b, len); -printf("DO_FORWARD write buffer %p len %d returns %d\n", b, len, l); - if (l <= 0) break; - len -= l; - b += l; - } - - if (lock) if (pthread_mutex_unlock(&f->lock)) abort(); - } -} - -static void *forward_s_to_sc(void *_f) -{ - forward_data *f = _f; - do_forward(f, f->s, f->sc, 0); - return NULL; -} - -static void *forward_sc_to_s(void *_f) -{ - forward_data *f = _f; - do_forward(f, f->sc, f->s, 1); - printf("INFO: forwarder exits\n"); - return NULL; -} - -void forward_start_client(void *_f, int s) -{ - forward_data *f = _f; - f->sc = s; - new_thread(forward_s_to_sc, f); - new_thread(forward_sc_to_s, f); -} - -void *forwarder(char *ip, int port) -{ - forward_data *f; - struct sockaddr_in a; - - f = malloc(sizeof(*f)); if (f == NULL) abort(); - - pthread_mutex_init(&f->lock, NULL); - pthread_mutex_init(&f->datalock, NULL); - pthread_cond_init(&f->datacond, NULL); - - f->sc = -1; - f->head = f->tail = NULL; - - f->s = socket(AF_INET, SOCK_STREAM, 0); - if (f->s == -1) { perror("socket"); exit(1); } - - a.sin_family = AF_INET; - a.sin_port = htons(port); - a.sin_addr.s_addr = inet_addr(ip); - - if (connect(f->s, (struct sockaddr *)&a, sizeof(a)) == -1) - { perror("connect"); exit(1); } - - new_thread(data_sender, f); - - return f; -} - -void forward(void *_forwarder, char *buf, int size) -{ - forward_data *f = _forwarder; - databuf *new; - - new = malloc(sizeof(*new)); if (new == NULL) abort(); - - if (pthread_mutex_lock(&f->datalock)) abort(); - - new->d = malloc(size); if (new->d == NULL) abort(); - memcpy(new->d, buf, size); - new->l = size; - new->next = NULL; - if (f->head == NULL) f->head = new; - f->tail = new; - - if (pthread_cond_signal(&f->datacond)) abort(); - if (pthread_mutex_unlock(&f->datalock)) abort(); -} diff --git a/common/utils/T/tracer/local.c b/common/utils/T/local_tracer.c similarity index 88% rename from common/utils/T/tracer/local.c rename to common/utils/T/local_tracer.c index 2550a025497625ef6abea3912056f2e6451a125f..f61df5a483741b1f7927ae9d075dc5f60a594f38 100644 --- a/common/utils/T/tracer/local.c +++ b/common/utils/T/local_tracer.c @@ -10,9 +10,7 @@ #include <pthread.h> #include <inttypes.h> -#define DEFAULT_PORT 2021 - -#include "../T_defs.h" +#include "T_defs.h" static T_cache_t *T_cache; static int T_busylist_head; @@ -165,8 +163,6 @@ static void *forwarder(int port, int s) f->socket_remote = get_connection("127.0.0.1", port); - printf("connected\n"); - new_thread(data_sender, f); new_thread(forward_remote_messages, f); @@ -239,38 +235,16 @@ static void init_shm(void) for (i = 0; i < T_CACHE_SIZE; i++) T_cache[i].busy = 0; } -static void usage(void) -{ - printf( -"tracer - local side\n" -"options:\n" -" -p <port> wait for remote tracer on port <port> (default %d)\n" -" -nowait don't wait for remote tracer, start tracee immediately\n", - DEFAULT_PORT - ); - exit(1); -} - -int main(int n, char **v) +void T_local_tracer_main(int remote_port, int wait_for_tracer, + int local_socket) { int s; - int i; - int port = DEFAULT_PORT; - int local_port = 2020; - int dont_wait = 0; + int port = remote_port; + int dont_wait = wait_for_tracer ? 0 : 1; void *f; - for (i = 1; i < n; i++) { - if (!strcmp(v[i], "-h") || !strcmp(v[i], "--help")) usage(); - if (!strcmp(v[i], "-p")) { if (i > n-2) usage(); - port = atoi(v[++i]); continue; } - if (!strcmp(v[i], "-nowait")) { dont_wait = 1; continue; } - printf("ERROR: unknown option %s\n", v[i]); - usage(); - } - init_shm(); - s = get_connection("127.0.0.1", local_port); + s = local_socket; if (dont_wait) { char t = 2; @@ -289,5 +263,4 @@ int main(int n, char **v) T_busylist_head++; T_busylist_head &= T_CACHE_SIZE - 1; } - return 0; } diff --git a/common/utils/T/main.c b/common/utils/T/main.c deleted file mode 100644 index 3552f19df52d0c16652e85afb49f0ffee4258bb5..0000000000000000000000000000000000000000 --- a/common/utils/T/main.c +++ /dev/null @@ -1,21 +0,0 @@ -#include "T.h" -#include <stdio.h> -#include <stdlib.h> -#include <stdint.h> -#include <string.h> -#include <unistd.h> - -int main(void) -{ - T_connect_to_tracer("127.0.0.1", 2020); - printf("after connect\n"); - while (1) { - char *buf = "hello world %s!\n"; - //T(T_first, T_PRINTF("hello world %s!\n", "yo")); - T(T_buf_test, T_BUFFER("hello world %s!\n", strlen(buf)+1)); - usleep(1); - } - while (1) pause(); - - return 0; -} diff --git a/common/utils/T/tracer/Makefile b/common/utils/T/tracer/Makefile index 5044c2e8b36f416d8f3a72f0026c22b34f6daf24..e9d9b99da7454a061bc137969245e4444be742c9 100644 --- a/common/utils/T/tracer/Makefile +++ b/common/utils/T/tracer/Makefile @@ -1,11 +1,40 @@ -all: local remote +CC=gcc +CFLAGS=-Wall -g -pthread -DT_TRACER -I. -local: - make -f Makefile.local +#CFLAGS += -O3 -ffast-math -fomit-frame-pointer -remote: - make -f Makefile.remote textlog enb vcd +LIBS=-lX11 -lm -lpng -lXft + +all: textlog enb vcd + +textlog: utils.o textlog.o database.o event.o handler.o config.o \ + event_selector.o view/view.a gui/gui.a logger/logger.a + $(CC) $(CFLAGS) -o textlog $^ $(LIBS) + +enb: utils.o enb.o database.o event.o handler.o config.o \ + event_selector.o view/view.a gui/gui.a logger/logger.a + $(CC) $(CFLAGS) -o enb $^ $(LIBS) + +vcd: utils.o vcd.o database.o event.o handler.o config.o \ + event_selector.o view/view.a gui/gui.a logger/logger.a + $(CC) $(CFLAGS) -o vcd $^ $(LIBS) + +.PHONY: all gui/gui.a view/view.a logger/logger.a + +gui/gui.a: + cd gui && make + +view/view.a: + cd view && make + +logger/logger.a: + cd logger && make + +%.o: %.c + $(CC) $(CFLAGS) -c -o $@ $< clean: - make -f Makefile.local clean - make -f Makefile.remote clean + rm -f *.o core tracer_remote textlog enb vcd + cd gui && make clean + cd view && make clean + cd logger && make clean diff --git a/common/utils/T/tracer/Makefile.local b/common/utils/T/tracer/Makefile.local deleted file mode 100644 index 4e971fc627f3c031e1485077078a881edcd65182..0000000000000000000000000000000000000000 --- a/common/utils/T/tracer/Makefile.local +++ /dev/null @@ -1,18 +0,0 @@ -CC=gcc -CFLAGS=-Wall -g -pthread -DT_TRACER - -#CFLAGS += -O3 -ffast-math -fomit-frame-pointer - -LIBS += -lrt - -PROG=tracer_local -OBJS=local.o - -$(PROG): $(OBJS) - $(CC) $(CFLAGS) -o $(PROG) $(OBJS) $(LIBS) - -%.o: %.c - $(CC) $(CFLAGS) -c -o $@ $< - -clean: - rm -f *.o $(PROG) core diff --git a/common/utils/T/tracer/Makefile.remote b/common/utils/T/tracer/Makefile.remote deleted file mode 100644 index b2663f8651449c9c37826d21a6e6a2727b854174..0000000000000000000000000000000000000000 --- a/common/utils/T/tracer/Makefile.remote +++ /dev/null @@ -1,38 +0,0 @@ -CC=gcc -CFLAGS=-Wall -g -pthread -DT_TRACER -I. - -#CFLAGS += -O3 -ffast-math -fomit-frame-pointer - -LIBS=-lX11 -lm -lpng -lXft - -textlog: utils.o textlog.o database.o event.o handler.o config.o \ - event_selector.o view/view.a gui/gui.a logger/logger.a - $(CC) $(CFLAGS) -o textlog $^ $(LIBS) - -enb: utils.o enb.o database.o event.o handler.o config.o \ - event_selector.o view/view.a gui/gui.a logger/logger.a - $(CC) $(CFLAGS) -o enb $^ $(LIBS) - -vcd: utils.o vcd.o database.o event.o handler.o config.o \ - event_selector.o view/view.a gui/gui.a logger/logger.a - $(CC) $(CFLAGS) -o vcd $^ $(LIBS) - -.PHONY: gui/gui.a view/view.a logger/logger.a - -gui/gui.a: - cd gui && make - -view/view.a: - cd view && make - -logger/logger.a: - cd logger && make - -%.o: %.c - $(CC) $(CFLAGS) -c -o $@ $< - -clean: - rm -f *.o core tracer_remote textlog enb vcd - cd gui && make clean - cd view && make clean - cd logger && make clean diff --git a/targets/SIMU/USER/oaisim.c b/targets/SIMU/USER/oaisim.c index c3700c9da911fe41fea7215281d414bfc5e2bb9c..30b1c20bc81f2814f204a8c7d91fe87afd22eaae 100644 --- a/targets/SIMU/USER/oaisim.c +++ b/targets/SIMU/USER/oaisim.c @@ -250,6 +250,10 @@ help (void) printf ("-Y Set the global log verbosity (none, low, medium, high, full) \n"); printf ("-z Set the cooperation flag (0 for no cooperation, 1 for delay diversity and 2 for distributed alamouti\n"); printf ("-Z Reserved\n"); +#if T_TRACER + printf ("--T_port [port] use given port\n"); + printf ("--T_nowait don't wait for tracer, start immediately\n"); +#endif } pthread_t log_thread; @@ -1252,6 +1256,11 @@ l2l1_task (void *args_p) return NULL; } +#if T_TRACER +int T_wait = 1; /* by default we wait for the tracer */ +int T_port = 2021; /* default port to listen to to wait for the tracer */ +#endif + /*------------------------------------------------------------------------------*/ int main (int argc, char **argv) @@ -1269,13 +1278,6 @@ main (int argc, char **argv) int port,Process_Flag=0,wgt,Channel_Flag=0,temp; #endif -#if T_TRACER - char *T_ip = "127.0.0.1"; - int T_port = 2020; - printf("connecting to T tracer IP %s port %d\n", T_ip, T_port); - T_connect_to_tracer(T_ip, T_port); -#endif - //default parameters oai_emulation.info.n_frames = 0xffff; //1024; //10; oai_emulation.info.n_frames_flag = 0; //fixme @@ -1292,6 +1294,10 @@ main (int argc, char **argv) // get command-line options get_simulation_options (argc, argv); //Command-line options +#if T_TRACER + T_init(T_port, T_wait); +#endif + // Initialize VCD LOG module VCD_SIGNAL_DUMPER_INIT (oai_emulation.info.vcd_file); diff --git a/targets/SIMU/USER/oaisim_functions.c b/targets/SIMU/USER/oaisim_functions.c index 014a9e39d02aa2d3192095c00ae1efd80a9cd1a7..9927cba2939ec267e0486aef5a2184f0fa600f1b 100644 --- a/targets/SIMU/USER/oaisim_functions.c +++ b/targets/SIMU/USER/oaisim_functions.c @@ -213,6 +213,11 @@ void get_simulation_options(int argc, char *argv[]) LONG_OPTION_PHYTEST, LONG_OPTION_XFORMS, + +#if T_TRACER + LONG_OPTION_T_PORT, + LONG_OPTION_T_NOWAIT, +#endif }; static struct option long_options[] = { @@ -247,6 +252,11 @@ void get_simulation_options(int argc, char *argv[]) {"phy-test", no_argument, NULL, LONG_OPTION_PHYTEST}, {"xforms", no_argument, 0, LONG_OPTION_XFORMS}, +#if T_TRACER + {"T_port", required_argument, 0, LONG_OPTION_T_PORT}, + {"T_nowait", no_argument, 0, LONG_OPTION_T_NOWAIT}, +#endif + {NULL, 0, NULL, 0} }; @@ -414,6 +424,21 @@ void get_simulation_options(int argc, char *argv[]) xforms=1; break; +#if T_TRACER + case LONG_OPTION_T_PORT: { + extern int T_port; + if (optarg == NULL) abort(); /* should not happen */ + T_port = atoi(optarg); + break; + } + + case LONG_OPTION_T_NOWAIT: { + extern int T_wait; + T_wait = 0; + break; + } +#endif + case 'a': abstraction_flag = 1; break;