/uspace/trunk/fb/ppm.c |
---|
File deleted |
/uspace/trunk/fb/ppm.h |
---|
File deleted |
/uspace/trunk/fb/ega.c |
---|
110,7 → 110,7 |
/* We accept one area for data interchange */ |
intersize = IPC_GET_ARG2(call); |
if (intersize >= scr_width*scr_height*sizeof(*interbuf)) { |
receive_comm_area(callid,&call,(void **)&interbuf); |
receive_comm_area(callid,&call,(void **)&interbuf, scr_width*scr_height*sizeof(*interbuf)); |
continue; |
} |
retval = EINVAL; |
/uspace/trunk/fb/fb.c |
---|
46,7 → 46,6 |
#include "fb.h" |
#include "main.h" |
#include "../console/screenbuffer.h" |
#include "ppm.h" |
#define DEFAULT_BGCOLOR 0x000080 |
#define DEFAULT_FGCOLOR 0xffff00 |
475,89 → 474,7 |
cursor_print(vp); |
} |
static int shm_handle(ipc_callid_t callid, ipc_call_t *call, int vp) |
{ |
static keyfield_t *interbuffer = NULL; |
static size_t intersize = 0; |
static char *pixmap = NULL; |
static ipcarg_t pixmap_id = 0; |
static size_t pixmap_size; |
int handled = 1; |
int retval = 0; |
viewport_t *vport = &viewports[vp]; |
unsigned int x,y; |
switch (IPC_GET_METHOD(*call)) { |
case IPC_M_AS_AREA_SEND: |
/* We accept one area for data interchange */ |
if (IPC_GET_ARG1(*call) == pixmap_id) { |
void *dest = as_get_mappable_page(IPC_GET_ARG2(*call)); |
pixmap_size = IPC_GET_ARG2(*call); |
if (!ipc_answer_fast(callid, 0, (sysarg_t)dest, 0)) |
pixmap = dest; |
else |
pixmap_id = 0; |
if (pixmap[0] != 'P') |
while (1) |
; |
return 1; |
} else { |
intersize = IPC_GET_ARG2(*call); |
receive_comm_area(callid,call,(void **)&interbuffer); |
} |
return 1; |
case FB_PREPARE_SHM: |
if (pixmap_id) |
retval = EBUSY; |
else |
pixmap_id = IPC_GET_ARG1(*call); |
break; |
case FB_DROP_SHM: |
if (pixmap) { |
as_area_destroy(pixmap); |
pixmap = NULL; |
} |
pixmap_id = 0; |
break; |
case FB_DRAW_PPM: |
if (!pixmap) { |
retval = EINVAL; |
break; |
} |
x = IPC_GET_ARG1(*call); |
y = IPC_GET_ARG2(*call); |
if (x > vport->width || y > vport->height) { |
retval = EINVAL; |
break; |
} |
draw_ppm(pixmap, pixmap_size, IPC_GET_ARG1(*call), IPC_GET_ARG2(*call), |
vport->width - x, vport->height - y, putpixel, vp); |
break; |
case FB_DRAW_TEXT_DATA: |
if (!interbuffer) { |
retval = EINVAL; |
break; |
} |
if (intersize < vport->cols*vport->rows*sizeof(*interbuffer)) { |
retval = EINVAL; |
break; |
} |
draw_text_data(vp, interbuffer); |
break; |
default: |
handled = 0; |
} |
if (handled) |
ipc_answer_fast(callid, retval, 0, 0); |
return handled; |
} |
/** Function for handling connections to FB |
* |
*/ |
569,6 → 486,8 |
int i; |
unsigned int row,col; |
char c; |
keyfield_t *interbuffer = NULL; |
size_t intersize = 0; |
int vp = 0; |
viewport_t *vport = &viewports[0]; |
586,9 → 505,6 |
cursor_blink(vp); |
continue; |
} |
if (shm_handle(callid, &call, vp)) |
continue; |
switch (IPC_GET_METHOD(call)) { |
case IPC_M_PHONE_HUNGUP: |
client_connected = 0; |
597,7 → 513,25 |
vport->initialized = 0; |
ipc_answer_fast(callid,0,0,0); |
return; /* Exit thread */ |
case IPC_M_AS_AREA_SEND: |
/* We accept one area for data interchange */ |
intersize = IPC_GET_ARG2(call); |
receive_comm_area(callid,&call,(void **)&interbuffer, |
sizeof(*interbuffer)*viewports[0].cols*viewports[0].rows); |
continue; |
case FB_DRAW_TEXT_DATA: |
if (!interbuffer) { |
retval = EINVAL; |
break; |
} |
if (intersize < vport->cols*vport->rows*sizeof(*interbuffer)) { |
retval = EINVAL; |
break; |
} |
draw_text_data(vp, interbuffer); |
retval = 0; |
break; |
case FB_PUTCHAR: |
c = IPC_GET_ARG1(call); |
row = IPC_GET_ARG2(call); |
/uspace/trunk/fb/main.c |
---|
39,18 → 39,25 |
#include "ega.h" |
#include "main.h" |
void receive_comm_area(ipc_callid_t callid, ipc_call_t *call, void **area) |
void receive_comm_area(ipc_callid_t callid, ipc_call_t *call, void **area, |
size_t maxsize) |
{ |
void *dest; |
dest = as_get_mappable_page(IPC_GET_ARG2(*call)); |
if (ipc_answer_fast(callid, 0, (sysarg_t)dest, 0) == 0) { |
if (*area) |
as_area_destroy(*area); |
*area = dest; |
if (*area) { |
ipc_answer_fast(callid, ELIMIT, 0, 0); |
return; |
} |
if (IPC_GET_ARG2(*call) > ALIGN_UP(maxsize, PAGE_SIZE)) { |
ipc_answer_fast(callid, EINVAL, 0, 0); |
return; |
} |
dest = as_get_mappable_page(maxsize); |
if (ipc_answer_fast(callid, 0, (sysarg_t)dest, 0) == 0) |
*area = dest; |
} |
int main(int argc, char *argv[]) |
{ |
ipcarg_t phonead; |
/uspace/trunk/fb/main.h |
---|
29,6 → 29,7 |
#ifndef __MAIN_H_ |
#define __MAIN_H_ |
void receive_comm_area(ipc_callid_t callid, ipc_call_t *call, void **area); |
void receive_comm_area(ipc_callid_t callid, ipc_call_t *call, void **area, |
size_t maxsize); |
#endif |
/uspace/trunk/fb/Makefile |
---|
49,8 → 49,7 |
font-8x16.c \ |
main.c \ |
sysio.c \ |
ega.c \ |
ppm.c |
ega.c |
OBJECTS := $(addsuffix .o,$(basename $(SOURCES))) |
/uspace/trunk/libc/generic/async.c |
---|
623,27 → 623,6 |
return (aid_t) msg; |
} |
/** Send message and return id of the sent message |
* |
* The return value can be used as input for async_wait() to wait |
* for completion. |
*/ |
aid_t async_send_3(int phoneid, ipcarg_t method, ipcarg_t arg1, ipcarg_t arg2, |
ipcarg_t arg3, ipc_call_t *dataptr) |
{ |
amsg_t *msg; |
msg = malloc(sizeof(*msg)); |
msg->done = 0; |
msg->dataptr = dataptr; |
msg->wdata.active = 1; /* We may sleep in next method, but it |
* will use it's own mechanism */ |
ipc_call_async_3(phoneid,method,arg1,arg2,arg3, msg,reply_received,1); |
return (aid_t) msg; |
} |
/** Wait for a message sent by async framework |
* |
* @param amsgid Message ID to wait for |
/uspace/trunk/libc/generic/mmap.c |
---|
33,15 → 33,15 |
void *mmap(void *start, size_t length, int prot, int flags, int fd, |
off_t offset) |
{ |
int rc; |
if (!start) |
start = as_get_mappable_page(length); |
prot |= AS_AREA_CACHEABLE; |
// if (! ((flags & MAP_SHARED) ^ (flags & MAP_PRIVATE))) |
// return MAP_FAILED; |
// return NULL; |
if (! (flags & MAP_ANONYMOUS)) |
return MAP_FAILED; |
return NULL; |
return as_area_create(start, length, prot); |
} |
/uspace/trunk/libc/generic/time.c |
---|
73,7 → 73,7 |
printf("Failed to initialize timeofday memarea\n"); |
_exit(1); |
} |
if (! (rights & AS_AREA_READ)) { |
if (rights != (AS_AREA_READ | AS_AREA_CACHEABLE)) { |
printf("Received bad rights on time area: %X\n", |
rights); |
as_area_destroy(mapping); |
/uspace/trunk/libc/include/sys/mman.h |
---|
31,8 → 31,6 |
#include <as.h> |
#define MAP_FAILED ((void *) -1) |
#define MAP_SHARED (1 << 0) |
#define MAP_PRIVATE (1 << 1) |
#define MAP_FIXED (1 << 2) |
/uspace/trunk/libc/include/ipc/fb.h |
---|
20,8 → 20,4 |
#define FB_DRAW_TEXT_DATA 1036 |
#define FB_FLUSH 1037 |
#define FB_DRAW_PPM 1038 |
#define FB_PREPARE_SHM 1039 |
#define FB_DROP_SHM 1040 |
#endif |
/uspace/trunk/libc/include/async.h |
---|
46,8 → 46,6 |
aid_t async_send_2(int phoneid, ipcarg_t method, ipcarg_t arg1, ipcarg_t arg2, |
ipc_call_t *dataptr); |
aid_t async_send_3(int phoneid, ipcarg_t method, ipcarg_t arg1, ipcarg_t arg2, |
ipcarg_t arg3, ipc_call_t *dataptr); |
void async_wait_for(aid_t amsgid, ipcarg_t *result); |
int async_wait_timeout(aid_t amsgid, ipcarg_t *retval, suseconds_t timeout); |
70,25 → 68,8 |
*r2 = IPC_GET_ARG2(result); |
return rc; |
} |
static inline ipcarg_t sync_send_3(int phoneid, ipcarg_t method, ipcarg_t arg1, |
ipcarg_t arg2, ipcarg_t arg3, ipcarg_t *r1, |
ipcarg_t *r2, ipcarg_t *r3) |
{ |
ipc_call_t result; |
ipcarg_t rc; |
aid_t eid = async_send_3(phoneid, method, arg1, arg2, arg3, &result); |
async_wait_for(eid, &rc); |
if (r1) |
*r1 = IPC_GET_ARG1(result); |
if (r2) |
*r2 = IPC_GET_ARG2(result); |
if (r3) |
*r3 = IPC_GET_ARG3(result); |
return rc; |
} |
pstid_t async_new_connection(ipcarg_t in_phone_hash,ipc_callid_t callid, |
ipc_call_t *call, |
void (*cthread)(ipc_callid_t,ipc_call_t *)); |
/uspace/trunk/libc/arch/ia64/Makefile.inc |
---|
38,6 → 38,3 |
ARCH_SOURCES += arch/$(ARCH)/src/syscall.S \ |
arch/$(ARCH)/src/psthread.S \ |
arch/$(ARCH)/src/thread.c |
BFD_NAME = elf64-little |
BFD_ARCH = ia64-elf64 |
/uspace/trunk/libc/arch/ppc32/Makefile.inc |
---|
39,6 → 39,3 |
CFLAGS += -mcpu=powerpc -msoft-float -m32 |
AFLAGS += -a32 |
LFLAGS += -N |
BFD_NAME = elf32-powerpc |
BFD_ARCH = powerpc:common |
/uspace/trunk/libc/arch/amd64/Makefile.inc |
---|
37,6 → 37,3 |
arch/$(ARCH)/src/thread.c |
LFLAGS += -N |
BFD_NAME = elf64-x86-64 |
BFD_ARCH = i386:x86-64 |
/uspace/trunk/libc/arch/mips32/Makefile.inc |
---|
37,5 → 37,4 |
arch/$(ARCH)/src/psthread.S \ |
arch/$(ARCH)/src/thread.c |
BFD_ARCH = mips |
BFD_NAME = elf32-little |
/uspace/trunk/libc/arch/ia32/Makefile.inc |
---|
37,6 → 37,3 |
arch/$(ARCH)/src/thread.c |
LFLAGS += -N |
BFD_NAME = elf32-i386 |
BFD_ARCH = i386 |
/uspace/trunk/libc/arch/mips32eb/Makefile.inc |
---|
31,13 → 31,9 |
TARGET = mips-sgi-irix5 |
TOOLCHAIN_DIR = /usr/local/mips/bin |
CFLAGS += -mips3 |
CFLAGS += -mno-abicalls -mips3 |
ARCH_SOURCES += arch/$(ARCH)/src/syscall.c \ |
arch/$(ARCH)/src/psthread.S \ |
arch/$(ARCH)/src/thread.c |
ARCH_SOURCES += arch/$(ARCH)/src/syscall.c |
LFLAGS += -N |
BFD_ARCH = mips |
BFD_NAME = elf32-big |
/uspace/trunk/console/nameic.ppm |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/uspace/trunk/console/helenos.ppm |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/uspace/trunk/console/console.c |
---|
388,7 → 388,7 |
} |
if ((interbuffer = mmap(NULL, sizeof(keyfield_t) * fb_info.cols * fb_info.rows , PROTO_READ|PROTO_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, 0 ,0 )) != NULL) { |
if (ipc_call_sync_3(fb_info.phone, IPC_M_AS_AREA_SEND, (ipcarg_t)interbuffer, 0, AS_AREA_READ, NULL, NULL, NULL) != 0) { |
if (ipc_call_sync_3(fb_info.phone, IPC_M_AS_AREA_SEND, (ipcarg_t)interbuffer, 0, AS_AREA_READ | AS_AREA_CACHEABLE, NULL, NULL, NULL) != 0) { |
munmap(interbuffer, sizeof(keyfield_t) * fb_info.cols * fb_info.rows); |
interbuffer = NULL; |
} |
/uspace/trunk/console/gcons.c |
---|
30,21 → 30,18 |
#include <ipc/ipc.h> |
#include <async.h> |
#include <stdio.h> |
#include <sys/mman.h> |
#include <string.h> |
#include "console.h" |
#include "gcons.h" |
#define CONSOLE_TOP 65 |
#define CONSOLE_TOP 50 |
#define CONSOLE_MARGIN 10 |
#define STATUS_START 120 |
#define STATUS_SPACE 5 |
#define STATUS_SPACE 20 |
#define STATUS_WIDTH 40 |
#define STATUS_HEIGHT 30 |
#define MAIN_COLOR 0xffffff |
#define MAIN_COLOR 0x118811 |
static int use_gcons = 0; |
static ipcarg_t xres,yres; |
148,42 → 145,9 |
vp_switch(console_vp); |
} |
static void draw_pixmap(char *logo, size_t size, int x, int y) |
{ |
char *shm; |
int rc; |
/* Create area */ |
shm = mmap(NULL, size, PROTO_READ | PROTO_WRITE, MAP_SHARED | MAP_ANONYMOUS, 0, 0); |
if (shm == MAP_FAILED) |
return; |
memcpy(shm, logo, size); |
/* Send area */ |
rc = sync_send_2(fbphone, FB_PREPARE_SHM, (ipcarg_t)shm, 0, NULL, NULL); |
if (rc) |
goto exit; |
rc = sync_send_3(fbphone, IPC_M_AS_AREA_SEND, (ipcarg_t)shm, 0, PROTO_READ, NULL, NULL, NULL); |
if (rc) |
goto drop; |
/* Draw logo */ |
send_call_2(fbphone, FB_DRAW_PPM, x, y); |
drop: |
/* Drop area */ |
nsend_call(fbphone, FB_DROP_SHM, 0); |
exit: |
/* Remove area */ |
munmap(shm, size); |
} |
extern char _binary_helenos_ppm_start[0]; |
extern int _binary_helenos_ppm_size; |
extern char _binary_nameic_ppm_start[0]; |
extern int _binary_nameic_ppm_size; |
void gcons_redraw_console(void) |
{ |
int i; |
size_t hsize = (size_t)&_binary_helenos_ppm_size; |
if (!use_gcons) |
return; |
191,10 → 155,7 |
vp_switch(0); |
set_style(MAIN_COLOR, MAIN_COLOR); |
clear(); |
draw_pixmap(_binary_helenos_ppm_start, (size_t)&_binary_helenos_ppm_size, xres-64, 0); |
draw_pixmap(_binary_nameic_ppm_start, (size_t)&_binary_nameic_ppm_size, 5, 10); |
for (i=0;i < CONSOLE_COUNT; i++) |
draw_stat(i, i == active_console ? CONS_ACTIVE : CONS_DISCONNECTED); |
vp_switch(console_vp); |
223,7 → 184,7 |
/* Create status buttons */ |
for (i=0; i < CONSOLE_COUNT; i++) { |
cstatus_vp[i] = vp_create(STATUS_START+CONSOLE_MARGIN+i*(STATUS_WIDTH+STATUS_SPACE), |
cstatus_vp[i] = vp_create(CONSOLE_MARGIN+i*(STATUS_WIDTH+STATUS_SPACE), |
CONSOLE_MARGIN, STATUS_WIDTH, STATUS_HEIGHT); |
if (cstatus_vp[i] < 0) |
return; |
/uspace/trunk/console/Makefile |
---|
47,12 → 47,9 |
../kbd/generic/key_buffer.c \ |
gcons.c |
IMAGES = helenos.ppm nameic.ppm |
ARCH_SOURCES = |
GENERIC_OBJECTS := $(addsuffix .o,$(basename $(GENERIC_SOURCES))) \ |
$(addsuffix .o,$(basename $(IMAGES))) |
GENERIC_OBJECTS := $(addsuffix .o,$(basename $(GENERIC_SOURCES))) |
ARCH_OBJECTS := $(addsuffix .o,$(basename $(ARCH_SOURCES))) |
.PHONY: all clean depend disasm |
81,6 → 78,3 |
%.o: %.c |
$(CC) $(DEFS) $(CFLAGS) -c $< -o $@ |
%.o: %.ppm |
$(OBJCOPY) -I binary -O $(BFD_NAME) -B $(BFD_ARCH) $< $@ |
/uspace/trunk/ns/ns.c |
---|
90,7 → 90,7 |
addr = as_get_mappable_page(PAGE_SIZE); |
map_physmem(ph_addr, addr, 1, AS_AREA_READ | AS_AREA_CACHEABLE); |
} |
ipc_answer_fast(callid, 0, (ipcarg_t)addr, AS_AREA_READ); |
ipc_answer_fast(callid, 0, (ipcarg_t)addr, AS_AREA_READ | AS_AREA_CACHEABLE); |
} |
int main(int argc, char **argv) |
/uspace/trunk/kbd/arch/mips32eb |
---|
File deleted |
\ No newline at end of file |
Property changes: |
Deleted: svn:special |
-* |
\ No newline at end of property |