Changeset adf7f9c in mainline
- Timestamp:
- 2006-08-02T00:00:39Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- deaa22f
- Parents:
- 7c5a8dd
- Location:
- kernel/arch/xen32
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/xen32/include/drivers/xconsole.h
r7c5a8dd radf7f9c 36 36 #define __XCONSOLE_H__ 37 37 38 #include <arch/types.h> 39 40 typedef struct { 41 char in[1024]; 42 char out[2048]; 43 uint32_t in_cons; 44 uint32_t in_prod; 45 uint32_t out_cons; 46 uint32_t out_prod; 47 } xencons_t; 48 49 extern xencons_t console_page; 50 38 51 extern void xen_console_init(void); 39 52 -
kernel/arch/xen32/src/boot/boot.S
r7c5a8dd radf7f9c 78 78 shared_info: 79 79 .space PAGE_SIZE 80 81 .global console_page 82 .org 0x2000 83 console_page: 84 .space PAGE_SIZE -
kernel/arch/xen32/src/drivers/xconsole.c
r7c5a8dd radf7f9c 40 40 #include <console/console.h> 41 41 #include <arch/hypercall.h> 42 #include <mm/frame.h>43 42 44 43 #define MASK_INDEX(index, ring) ((index) & (sizeof(ring) - 1)) 45 46 typedef struct {47 char in[1024];48 char out[2048];49 uint32_t in_cons;50 uint32_t in_prod;51 uint32_t out_cons;52 uint32_t out_prod;53 } xencons_t;54 44 55 45 static bool asynchronous = false; … … 72 62 { 73 63 if (asynchronous) { 74 xencons_t *console = (xencons_t *) PA2KA(MA2PA(PFN2ADDR(start_info.console_mfn))); 75 uint32_t cons = console->out_cons; 76 uint32_t prod = console->out_prod; 64 uint32_t cons = console_page.out_cons; 65 uint32_t prod = console_page.out_prod; 77 66 78 67 memory_barrier(); 79 68 80 if ((prod - cons) > sizeof(console ->out))69 if ((prod - cons) > sizeof(console_page.out)) 81 70 return; 82 71 83 72 if (ch == '\n') 84 console ->out[MASK_INDEX(prod++, console->out)] = '\r';85 console ->out[MASK_INDEX(prod++, console->out)] = ch;73 console_page.out[MASK_INDEX(prod++, console_page.out)] = '\r'; 74 console_page.out[MASK_INDEX(prod++, console_page.out)] = ch; 86 75 87 76 write_barrier(); 88 77 89 console ->out_prod = prod;78 console_page.out_prod = prod; 90 79 91 80 xen_notify_remote(start_info.console_evtchn); -
kernel/arch/xen32/src/xen32.c
r7c5a8dd radf7f9c 79 79 pte.frame_address = ADDR2PFN((uintptr_t) start_info.shared_info); 80 80 xen_update_va_mapping(&shared_info, pte, UVMF_INVLPG); 81 82 pte.present = 1; 83 pte.writeable = 1; 84 pte.frame_address = start_info.console_mfn; 85 xen_update_va_mapping(&console_page, pte, UVMF_INVLPG); 81 86 82 87 xen_set_callbacks(XEN_CS, xen_callback, XEN_CS, xen_failsafe_callback);
Note:
See TracChangeset
for help on using the changeset viewer.