Changeset d9ec808b in mainline
- Timestamp:
- 2017-11-27T08:25:37Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 59953b57
- Parents:
- 7b8f933
- git-author:
- Jiri Svoboda <jiri@…> (2017-11-26 21:24:27)
- git-committer:
- Jiri Svoboda <jiri@…> (2017-11-27 08:25:37)
- Files:
-
- 2 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/src/drivers/niagara.c
r7b8f933 rd9ec808b 42 42 #include <arch.h> 43 43 #include <mm/slab.h> 44 #include <arch/drivers/niagara_buf.h> 44 45 #include <arch/drivers/kbd.h> 45 46 #include <arch/sun4v/hypercall.h> … … 81 82 * buffer definition follows. 82 83 */ 83 #define OUTPUT_BUFFER_SIZE ((PAGE_SIZE) - 2 * 8) 84 85 static volatile struct { 86 uint64_t read_ptr; 87 uint64_t write_ptr; 88 char data[OUTPUT_BUFFER_SIZE]; 89 } __attribute__ ((packed)) __attribute__ ((aligned(PAGE_SIZE))) output_buffer; 84 static volatile niagara_output_buffer_t __attribute__ ((aligned(PAGE_SIZE))) 85 output_buffer; 90 86 91 87 static parea_t outbuf_parea; … … 94 90 * Analogous to the output_buffer, see the previous definition. 95 91 */ 96 #define INPUT_BUFFER_SIZE ((PAGE_SIZE) - 2 * 8) 97 98 static volatile struct { 99 uint64_t write_ptr; 100 uint64_t read_ptr; 101 char data[INPUT_BUFFER_SIZE]; 102 } __attribute__ ((packed)) __attribute__ ((aligned(PAGE_SIZE))) input_buffer; 92 static volatile niagara_input_buffer_t __attribute__ ((aligned(PAGE_SIZE))) 93 input_buffer; 103 94 104 95 static parea_t inbuf_parea; -
uspace/drv/char/sun4v-con/sun4v-con.c
r7b8f933 rd9ec808b 39 39 #include <stdbool.h> 40 40 41 #include "niagara_buf.h" 41 42 #include "sun4v-con.h" 42 43 … … 45 46 #define POLL_INTERVAL 10000 46 47 47 /*48 * Kernel counterpart of the driver pushes characters (it has read) here.49 * Keep in sync with the definition from50 * kernel/arch/sparc64/src/drivers/niagara.c.51 */52 #define INPUT_BUFFER_SIZE ((PAGE_SIZE) - 2 * 8)53 54 typedef volatile struct {55 uint64_t write_ptr;56 uint64_t read_ptr;57 char data[INPUT_BUFFER_SIZE];58 } __attribute__((packed)) __attribute__((aligned(PAGE_SIZE))) *input_buffer_t;59 60 #define OUTPUT_FIFO_SIZE ((PAGE_SIZE) - 2 * sizeof(uint64_t))61 62 typedef volatile struct {63 uint64_t read_ptr;64 uint64_t write_ptr;65 char data[OUTPUT_FIFO_SIZE];66 } __attribute__((packed)) output_fifo_t;67 68 48 /* virtual address of the shared buffer */ 69 static input_buffer_tinput_buffer;70 static output_fifo_t *output_fifo;49 static niagara_input_buffer_t *input_buffer; 50 static niagara_output_buffer_t *output_fifo; 71 51 72 52 static int sun4v_con_read(chardev_srv_t *, void *, size_t, size_t *); … … 84 64 85 65 while (output_fifo->write_ptr == 86 (output_fifo->read_ptr + OUTPUT_ FIFO_SIZE - 1)87 % OUTPUT_ FIFO_SIZE);66 (output_fifo->read_ptr + OUTPUT_BUFFER_SIZE - 1) 67 % OUTPUT_BUFFER_SIZE); 88 68 89 69 output_fifo->data[output_fifo->write_ptr] = data; 90 70 output_fifo->write_ptr = 91 ((output_fifo->write_ptr) + 1) % OUTPUT_ FIFO_SIZE;71 ((output_fifo->write_ptr) + 1) % OUTPUT_BUFFER_SIZE; 92 72 } 93 73 … … 99 79 100 80 con->res = *res; 101 input_buffer = ( input_buffer_t) AS_AREA_ANY;81 input_buffer = (niagara_input_buffer_t *) AS_AREA_ANY; 102 82 103 83 fun = ddf_fun_create(con->dev, fun_exposed, "a"); … … 121 101 } 122 102 123 output_fifo = ( output_fifo_t *) AS_AREA_ANY;103 output_fifo = (niagara_output_buffer_t *) AS_AREA_ANY; 124 104 125 105 rc = physmem_map(res->out_base, 1, AS_AREA_READ | AS_AREA_WRITE, … … 140 120 return EOK; 141 121 error: 142 if (input_buffer != ( input_buffer_t) AS_AREA_ANY)122 if (input_buffer != (niagara_input_buffer_t *) AS_AREA_ANY) 143 123 physmem_unmap((void *) input_buffer); 144 124 145 if (output_fifo != ( output_fifo_t *) AS_AREA_ANY)125 if (output_fifo != (niagara_output_buffer_t *) AS_AREA_ANY) 146 126 physmem_unmap((void *) output_fifo); 147 127
Note:
See TracChangeset
for help on using the changeset viewer.