Adding tty thread primitive which only reports alive status every 10 seconds.
This commit is contained in:
parent
be121ac22f
commit
3926b7738d
4 changed files with 37 additions and 7 deletions
4
Makefile
4
Makefile
|
@ -7,11 +7,11 @@ INCDIRS = -I.
|
||||||
LIBDIRS = -L
|
LIBDIRS = -L
|
||||||
# used libraries
|
# used libraries
|
||||||
#LIBS = -lm
|
#LIBS = -lm
|
||||||
LIBS = -l
|
LIBS = -lpthread
|
||||||
|
|
||||||
# compiler and flags
|
# compiler and flags
|
||||||
CC = gcc
|
CC = gcc
|
||||||
CFLAGS = -Wall $(INCDIRS) $(LIBDIRS)
|
CFLAGS = -Wall $(INCDIRS) $(LIBDIRS) $(LIBS)
|
||||||
|
|
||||||
# objects are .o files created from all .c files in the directory (same name)
|
# objects are .o files created from all .c files in the directory (same name)
|
||||||
OBJECTS = $(patsubst %.c,%.o,$(wildcard *.c))
|
OBJECTS = $(patsubst %.c,%.o,$(wildcard *.c))
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include "moxerver.h"
|
#include "moxerver.h"
|
||||||
#include <signal.h> /* handling quit signals */
|
#include <signal.h> /* handling quit signals */
|
||||||
|
#include <pthread.h>
|
||||||
|
|
||||||
#define NAME "moxerver"
|
#define NAME "moxerver"
|
||||||
|
|
||||||
|
@ -49,6 +50,8 @@ int main(int argc, char *argv[]) {
|
||||||
fd_set read_fds;
|
fd_set read_fds;
|
||||||
int fdmax;
|
int fdmax;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
|
|
||||||
|
pthread_t tty_thread;
|
||||||
|
|
||||||
|
|
||||||
/* catch and handle some quit signals, SIGKILL can't be caught */
|
/* catch and handle some quit signals, SIGKILL can't be caught */
|
||||||
|
@ -107,7 +110,7 @@ int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
|
|
||||||
//TODO this is a good place to create and start the TTY thread, use "tty_path" when opening device
|
//TODO this is a good place to create and start the TTY thread, use "tty_path" when opening device
|
||||||
|
ret = pthread_create(&tty_thread, NULL, tty_thread_func, "starting tty thread...");
|
||||||
|
|
||||||
/* loop with timeouts waiting for client connection and data*/
|
/* loop with timeouts waiting for client connection and data*/
|
||||||
while (1) {
|
while (1) {
|
||||||
|
@ -177,10 +180,12 @@ int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
} /* END while() loop */
|
} /* END while() loop */
|
||||||
|
|
||||||
|
pthread_join(tty_thread, NULL);
|
||||||
|
|
||||||
/* unexpected break from while() loop */
|
/* unexpected break from while() loop */
|
||||||
fprintf(stderr, "[%s] unexpected condition\n", NAME);
|
fprintf(stderr, "[%s] unexpected condition\n", NAME);
|
||||||
/* cleanup and exit with -1 */
|
/* cleanup and exit with -1 */
|
||||||
cleanup(-1);
|
cleanup(-1);
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,6 +71,7 @@ int tty_reconfigure(struct tty_t *tty_dev, struct termios newttyset);
|
||||||
int tty_read(struct tty_t *tty_dev);
|
int tty_read(struct tty_t *tty_dev);
|
||||||
/* Sends data from a buffer to tty device. */
|
/* Sends data from a buffer to tty device. */
|
||||||
int tty_write(struct tty_t *tty_dev, char *databuf, int datalen);
|
int tty_write(struct tty_t *tty_dev, char *databuf, int datalen);
|
||||||
|
/* Main tty thread function */
|
||||||
|
void *tty_thread_func(void *arg);
|
||||||
|
|
||||||
|
|
||||||
|
|
28
tty.c
28
tty.c
|
@ -1,5 +1,7 @@
|
||||||
#include "moxerver.h"
|
#include "moxerver.h"
|
||||||
|
#include <string.h>
|
||||||
|
#define TTY_THREAD_TIMEOUT_SEC 30
|
||||||
|
#define NAME "tty"
|
||||||
|
|
||||||
/* Opens the tty device and configures it. */
|
/* Opens the tty device and configures it. */
|
||||||
int tty_open(struct tty_t *tty_dev, char* path) {
|
int tty_open(struct tty_t *tty_dev, char* path) {
|
||||||
|
@ -34,4 +36,26 @@ int tty_read(struct tty_t *tty_dev) {
|
||||||
int tty_write(struct tty_t *tty_dev, char *databuf, int datalen) {
|
int tty_write(struct tty_t *tty_dev, char *databuf, int datalen) {
|
||||||
// databuf should point to client data buffer
|
// databuf should point to client data buffer
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void *tty_thread_func(void *arg) {
|
||||||
|
int i = 0;
|
||||||
|
char *str;
|
||||||
|
str = (char*)arg;
|
||||||
|
|
||||||
|
fprintf(stderr, "[%s] tty thread started with passed argument: %s\n", NAME, str);
|
||||||
|
|
||||||
|
//while ((i * 10) < TTY_THREAD_TIMEOUT_SEC) {
|
||||||
|
while (1) {
|
||||||
|
sleep(10);
|
||||||
|
fprintf(stderr, "[%s] tty thread reporting ...\n", NAME);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf(stderr, "[%s] tty thread stoped\n", NAME);
|
||||||
|
|
||||||
|
strncpy(str, "bye", strlen(str));
|
||||||
|
|
||||||
|
return (void *)str;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue