File:
[ELWIX - Embedded LightWeight unIX -] /
libaitsched /
example /
test.c
Revision
1.6:
download - view:
text,
annotated -
select for diffs -
revision graph
Thu May 31 22:31:48 2012 UTC (12 years, 3 months ago) by
misho
Branches:
MAIN
CVS tags:
sched2_6,
sched2_5,
sched2_4,
sched2_3,
SCHED2_5,
SCHED2_4,
SCHED2_3,
SCHED2_2,
HEAD
version 2.2 (prod)
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <aitsched.h>
intptr_t Kill;
void *event(sched_task_t *arg)
{
printf("Event::\n");
return NULL;
}
void *eventlo(sched_task_t *arg)
{
printf("EventLOW::\n");
return NULL;
}
void *timer(sched_task_t *arg)
{
printf("Timer %p sec::\n", TASK_ARG(arg));
return NULL;
}
void *r(sched_task_t *arg)
{
printf("read::\n");
Kill++;
return NULL;
}
void *w(sched_task_t *arg)
{
printf("write::\n");
return NULL;
}
void *once(sched_task_t *arg)
{
printf("once::\n");
return NULL;
}
void sig(int s)
{
switch (s) {
case SIGTERM:
Kill++;
break;
}
}
int
main(int argc, char **argv)
{
sched_root_task_t *root;
int f;
struct sockaddr_in sin;
struct timespec ts = { 20, 0 };
// struct timespec p = { 0, 10000000 };
struct sigaction sa;
sa.sa_handler = sig;
sigemptyset(&sa.sa_mask);
sigaction(SIGTERM, &sa, NULL);
f = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (f == -1)
return 1;
sin.sin_len = sizeof sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(2345);
sin.sin_addr.s_addr = INADDR_ANY;
if (bind(f, (struct sockaddr*) &sin, sizeof sin) == -1)
return 1;
root = schedBegin();
if (!root) {
printf("Error:: #%d - %s\n", sched_GetErrno(), sched_GetError());
return 1;
}
if (!schedTimer(root, timer, (void*) (intptr_t) ts.tv_sec, ts, NULL, 0)) {
printf("Error:: #%d - %s\n", sched_GetErrno(), sched_GetError());
return 4;
} else
ts.tv_sec = 15;
if (!schedTimer(root, timer, (void*) (intptr_t) ts.tv_sec, ts, NULL, 0)) {
printf("Error:: #%d - %s\n", sched_GetErrno(), sched_GetError());
return 4;
} else
ts.tv_sec = 10;
if (!schedEvent(root, event, "piuk", 1234, NULL, 0)) {
printf("Error:: #%d - %s\n", sched_GetErrno(), sched_GetError());
return 2;
}
if (!schedEventLo(root, eventlo, "piuk", 1111, NULL, 0)) {
printf("Error:: #%d - %s\n", sched_GetErrno(), sched_GetError());
return 3;
}
if (!schedTimer(root, timer, (void*) (intptr_t) ts.tv_sec, ts, NULL, 0)) {
printf("Error:: #%d - %s\n", sched_GetErrno(), sched_GetError());
return 4;
}
if (!schedRead(root, r, "rrr", f, NULL, 0)) {
printf("Error:: #%d - %s\n", sched_GetErrno(), sched_GetError());
return 5;
}
if (!schedWrite(root, w, "www", f, NULL, 0)) {
printf("Error:: #%d - %s\n", sched_GetErrno(), sched_GetError());
return 6;
}
schedCallOnce(root, once, "000000", 42, NULL, 0);
// schedPolling(root, &p, NULL);
schedRun(root, &Kill);
schedEnd(&root);
close(f);
return 0;
}
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>