[Linux-hls-cvs] qosman/demos mpcore.c,NONE,1.1 mpcore.h,NONE,1.1 txtdemo.c,NONE,1.1
Status: Pre-Alpha
Brought to you by:
lucabe
|
From: Luca A. <lu...@us...> - 2004-04-09 13:54:50
|
Update of /cvsroot/linux-hls/qosman/demos In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24263 Added Files: mpcore.c mpcore.h txtdemo.c Log Message: As usual, I forgot "cvs add" --- NEW FILE: mpcore.h --- #ifndef __MP_CORE_H__ #define __MP_CORE_H__ struct controls { GtkWidget *prbar; GtkWidget *d_area; GdkRectangle u_area; GdkGC *gc; }; int file_end(void); void file_set_end(void); FILE *file_open(char *fname, ImageDesc *img); struct controls *window_prepare(int w, int h); void frame_display(struct controls *c, ImageDesc *img, unsigned char *b); #endif /* __MP_CORE_H__ */ --- NEW FILE: txtdemo.c --- #include<sys/types.h> #include<sys/wait.h> #include<signal.h> #include<stdio.h> #include<curses.h> #include <local.h> #include "qos.h" #include "req.h" #define Q0 1000 #define T 40000 #define TS (T / 4) #define W 1 extern struct reqactions pidactions; DWORD times[10000]; int global; static void exit_handler(int dummy) { endwin(); printf("The QoS task is exiting...\n"); qtask_unregister(getpid()); exit(0); } void tb(WORD i) { WINDOW *scr; struct sigaction sa; int res; char c; int l; /* TODO: Init */ scr = initscr(); sa.sa_handler = exit_handler; sigemptyset(&sa.sa_mask); sa.sa_flags=0; res = sigaction(SIGQUIT, &sa, NULL); if (res < 0) { perror("SigAction"); exit(-1); } res = sigaction(SIGQUIT, &sa, NULL); if (res < 0) { perror("SigAction"); exit(-1); } res = sigaction(SIGINT, &sa, NULL); if (res < 0) { perror("SigAction"); exit(-1); } res = sigaction(SIGTERM, &sa, NULL); if (res < 0) { perror("SigAction"); exit(-1); } c = '|'; l = 0; for (;;) { int j; /* <Do Something> */ global = 1; while (global != 600000) { j = global; j++; global = j; } switch (c) { case '|': c = '/'; break; case '/': c = '-'; break; case '-': c = '\\'; break; case '\\': c = '|'; break; default: mvwprintw(scr, 5, i * 2 + 5, "Error?"); exit(-1); } mvwprintw(scr, i * 2 + 5, 10, "\t%c\t\t%d\t\t%d", c, l, i); l = qman_task_endcycle(); refresh(); } } int main(int argc, char *argv[]) { struct qtask_attr t; struct qman_attr initparm; ID qt; char name[80]; int dummy; cprintf("Goin' to initialize the QoS Library..."); initparm.psu = 0.1; initparm.rmu = 0.9; /* RM upper bound = 0.9 */ initparm.psq = 1000; if (qman_init(&initparm) < 0) { printf("Error initializing the QoS Library...\n"); exit(-1); } cprintf(" done!\n"); qman_feedback(&pidactions); t.wcet = Q0; t.per = T; t.reduce = T / TS; t.w = W; if (argc > 1) { t.arg = atoi(argv[1]); } else { t.arg = 0; } sprintf(name, "QDemo Task %d", t.arg); t.name = name; t.body = tb; t.model = MM_TASK; qt = qman_task(&t); if (qt == 0) { printf("QoS Task creation failed...\n"); exit(-1); } wait(&dummy); printf("Waited...\n"); for(;;); exit(0); } --- NEW FILE: mpcore.c --- #include <stdio.h> #include <stdlib.h> #include <gtk/gtk.h> #include <mpeg.h> #include "mpcore.h" static GdkPixmap *screen; static int end = 0; int file_end(void) { return end; } void file_set_end(void) { end = 1; } void frame_display(struct controls *c, ImageDesc *img, unsigned char *b) { gdk_draw_rgb_32_image(screen, c->gc, 0, 0, img->Width, img->Height, GDK_RGB_DITHER_MAX, b, img->Width * 4); gtk_widget_draw(GTK_WIDGET(c->d_area), &c->u_area); } static gint delete_event(GtkWidget * widget, GdkEvent * event, gpointer data) { end = 1; return (TRUE); } static gboolean expose_event(GtkWidget * widget, GdkEventExpose * event, gpointer data) { if ((screen != NULL) && (!end)) { gdk_draw_pixmap(widget->window, widget->style->fg_gc[GTK_WIDGET_STATE(widget)], screen, event->area.x, event->area.y, event->area.x, event->area.y, event->area.width, event->area.height); } return TRUE; } static gint configure_event(GtkWidget * widget, GdkEventConfigure * event) { if (!screen) { screen = gdk_pixmap_new(widget->window, widget->allocation.width, widget->allocation.height, -1); gdk_draw_rectangle(screen, widget->style->white_gc, TRUE, 0, 0, widget->allocation.width, widget->allocation.height); } return TRUE; } FILE *file_open(char *fname, ImageDesc *img) { FILE *f; f = fopen(fname, "rb"); if (fname == NULL) { perror("Error opening:"); exit(-1); } SetMPEGOption(MPEG_DITHER, FULL_COLOR_DITHER); if (!OpenMPEG(f, img)) { fprintf(stderr, "OpenMPEG on %s failed\n", fname); exit(-1); } return f; } struct controls *window_prepare(int w, int h) { GdkGC *gc1; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *label; GtkObject *adj2; GtkWidget *window; GdkColor black; GdkColor white; char buff[80]; gint expid, confid; struct controls *c; c = malloc(sizeof(struct controls)); if (c == NULL) { return NULL; } gdk_rgb_init(); gtk_widget_set_default_colormap(gdk_rgb_get_cmap()); gtk_widget_set_default_visual(gdk_rgb_get_visual()); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(window), w, h + 50); vbox = gtk_vbox_new(FALSE, 0); hbox = gtk_hbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(vbox)); adj2 = gtk_adjustment_new(0.0, 0.0, 21.0, 0.1, 1.0, 1.0); c->prbar = gtk_progress_bar_new_with_adjustment(GTK_ADJUSTMENT(adj2)); gtk_box_pack_start(GTK_BOX(vbox), c->prbar, TRUE, TRUE, 0); gtk_widget_show(c->prbar); //drawing area c->d_area = gtk_drawing_area_new(); gtk_drawing_area_size(GTK_DRAWING_AREA(c->d_area), w, h); expid = gtk_signal_connect(GTK_OBJECT(c->d_area), "expose_event", GTK_SIGNAL_FUNC(expose_event), NULL); confid = gtk_signal_connect(GTK_OBJECT(c->d_area), "configure_event", GTK_SIGNAL_FUNC(configure_event), NULL); gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(c->d_area), FALSE, FALSE, 5); gtk_widget_show(c->d_area); sprintf(buff, "QoSlib Demo"); label = gtk_label_new(buff); gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(label), FALSE, FALSE, 5); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(hbox), FALSE, FALSE, 5); gtk_widget_show(hbox); gtk_widget_show(vbox); gtk_widget_show(window); gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(delete_event), NULL); c->u_area.x = 0; c->u_area.y = 0; c->u_area.width = c->d_area->allocation.width; c->u_area.height = c->d_area->allocation.height; c->gc = gdk_gc_new(c->d_area->window); gc1 = gdk_gc_new(c->d_area->window); gdk_color_black(gdk_colormap_get_system(), &black); gdk_color_white(gdk_colormap_get_system(), &white); gdk_gc_set_foreground(c->gc, &black); gdk_gc_set_background(c->gc, &white); gdk_gc_set_foreground(gc1, &white); gdk_gc_set_background(gc1, &black); return c; } |