00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef _CON_H
00016 #define _CON_H
00017
00018
00019 #include <l4/l4con/l4con.h>
00020 #include <l4/sys/types.h>
00021 #include <l4/lock/lock.h>
00022
00023
00024 #include "config.h"
00025
00026 #define MAX_NR_L4CONS (CONFIG_MAX_VC+1)
00027
00028
00029 struct l4con_vc;
00030
00031 typedef void (*pslim_copy_fn)(struct l4con_vc*, int sx, int sy,
00032 int width, int height, int dx, int dy);
00033 typedef void (*pslim_fill_fn)(struct l4con_vc*, int sx, int sy,
00034 int width, int height, unsigned color);
00035 typedef void (*pslim_blit_fn)(struct l4con_vc*, unsigned fgx, unsigned bgx,
00036 const l4_uint8_t* chardata,
00037 int width, int height, int yy, int xx);
00038 typedef void (*pslim_sync_fn)(void);
00039 typedef void (*pslim_drty_fn)(int x, int y, int width, int height);
00040
00041 struct l4con_vc
00042 {
00043 struct l4con_vc *prev;
00044 struct l4con_vc *next;
00045
00046 l4_uint8_t vc_number;
00047 l4_uint8_t mode;
00048 l4_threadid_t vc_l4id;
00049
00050 void *sbuf1;
00051 void *sbuf2;
00052 void *sbuf3;
00053 l4_size_t sbuf1_size;
00054 l4_size_t sbuf2_size;
00055 l4_size_t sbuf3_size;
00056
00057
00058 l4_uint8_t gmode;
00059 l4_uint8_t bpp;
00060 l4_umword_t client_xres;
00061 l4_umword_t client_yres;
00062 l4_umword_t client_xofs;
00063 l4_umword_t client_yofs;
00064 l4_umword_t xres, yres;
00065 l4_umword_t pan_xofs, pan_yofs;
00066 l4_umword_t logo_x, logo_y;
00067 l4_umword_t bytes_per_pixel;
00068 l4_umword_t bytes_per_line;
00069 l4_umword_t flags;
00070 l4_uint8_t *vfb;
00071 l4_uint8_t *fb;
00072
00073 l4_uint8_t vfb_in_server;
00074 l4_uint8_t save_restore;
00075 l4_uint8_t fb_mapped;
00076 l4_uint32_t vfb_size;
00077 l4lock_t fb_lock;
00078 const l4con_pslim_color_t *color_tab;
00079
00080 l4_taskid_t vc_partner_l4id;
00081
00082
00083 l4_uint8_t ev_mode;
00084 l4_threadid_t ev_partner_l4id;
00085
00086 pslim_copy_fn do_copy;
00087 pslim_fill_fn do_fill;
00088 pslim_sync_fn do_sync;
00089 pslim_drty_fn do_drty;
00090
00091 l4_threadid_t clients[CONFIG_MAX_CLIENTS];
00092 };
00093
00094 #endif