scvtb.c (66834) | scvtb.c (78956) |
---|---|
1/*- 2 * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, 19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * | 1/*- 2 * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, 19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * |
26 * $FreeBSD: head/sys/dev/syscons/scvtb.c 66834 2000-10-08 21:34:00Z phk $ | 26 * $FreeBSD: head/sys/dev/syscons/scvtb.c 78956 2001-06-29 08:24:56Z yokota $ |
27 */ 28 29#include "opt_syscons.h" 30 31#include <sys/param.h> 32#include <sys/systm.h> 33#include <sys/malloc.h> 34#include <sys/fbio.h> --- 22 unchanged lines hidden (view full) --- 57 switch (type) { 58 case VTB_MEMORY: 59 case VTB_RINGBUFFER: 60 if ((buf == NULL) && (cols*rows != 0)) { 61 vtb->vtb_buffer = 62 (vm_offset_t)malloc(cols*rows*sizeof(u_int16_t), 63 M_DEVBUF, 64 (wait) ? M_WAITOK : M_NOWAIT); | 27 */ 28 29#include "opt_syscons.h" 30 31#include <sys/param.h> 32#include <sys/systm.h> 33#include <sys/malloc.h> 34#include <sys/fbio.h> --- 22 unchanged lines hidden (view full) --- 57 switch (type) { 58 case VTB_MEMORY: 59 case VTB_RINGBUFFER: 60 if ((buf == NULL) && (cols*rows != 0)) { 61 vtb->vtb_buffer = 62 (vm_offset_t)malloc(cols*rows*sizeof(u_int16_t), 63 M_DEVBUF, 64 (wait) ? M_WAITOK : M_NOWAIT); |
65 if (vtb->vtb_buffer != NULL) | 65 if (vtb->vtb_buffer != NULL) { |
66 bzero((void *)sc_vtb_pointer(vtb, 0), 67 cols*rows*sizeof(u_int16_t)); | 66 bzero((void *)sc_vtb_pointer(vtb, 0), 67 cols*rows*sizeof(u_int16_t)); |
68 vtb->vtb_flags |= VTB_ALLOCED; 69 } |
|
68 } else { 69 vtb->vtb_buffer = (vm_offset_t)buf; 70 } 71 vtb->vtb_flags |= VTB_VALID; 72 break; 73 case VTB_FRAMEBUFFER: 74 vtb->vtb_buffer = (vm_offset_t)buf; 75 vtb->vtb_flags |= VTB_VALID; 76 break; 77 default: 78 break; 79 } 80} 81 82void 83sc_vtb_destroy(sc_vtb_t *vtb) 84{ 85 vm_offset_t p; 86 | 70 } else { 71 vtb->vtb_buffer = (vm_offset_t)buf; 72 } 73 vtb->vtb_flags |= VTB_VALID; 74 break; 75 case VTB_FRAMEBUFFER: 76 vtb->vtb_buffer = (vm_offset_t)buf; 77 vtb->vtb_flags |= VTB_VALID; 78 break; 79 default: 80 break; 81 } 82} 83 84void 85sc_vtb_destroy(sc_vtb_t *vtb) 86{ 87 vm_offset_t p; 88 |
87 vtb->vtb_flags = 0; | |
88 vtb->vtb_cols = 0; 89 vtb->vtb_rows = 0; 90 vtb->vtb_size = 0; 91 vtb->vtb_tail = 0; 92 93 p = vtb->vtb_buffer; 94 vtb->vtb_buffer = NULL; 95 switch (vtb->vtb_type) { 96 case VTB_MEMORY: 97 case VTB_RINGBUFFER: | 89 vtb->vtb_cols = 0; 90 vtb->vtb_rows = 0; 91 vtb->vtb_size = 0; 92 vtb->vtb_tail = 0; 93 94 p = vtb->vtb_buffer; 95 vtb->vtb_buffer = NULL; 96 switch (vtb->vtb_type) { 97 case VTB_MEMORY: 98 case VTB_RINGBUFFER: |
98 if (p != NULL) | 99 if ((vtb->vtb_flags & VTB_ALLOCED) && (p != NULL)) |
99 free((void *)p, M_DEVBUF); 100 break; 101 default: 102 break; 103 } | 100 free((void *)p, M_DEVBUF); 101 break; 102 default: 103 break; 104 } |
105 vtb->vtb_flags = 0; |
|
104 vtb->vtb_type = VTB_INVALID; 105} 106 107size_t 108sc_vtb_size(int cols, int rows) 109{ 110 return (size_t)(cols*rows*sizeof(u_int16_t)); 111} --- 186 unchanged lines hidden --- | 106 vtb->vtb_type = VTB_INVALID; 107} 108 109size_t 110sc_vtb_size(int cols, int rows) 111{ 112 return (size_t)(cols*rows*sizeof(u_int16_t)); 113} --- 186 unchanged lines hidden --- |