From owner-p4-projects@FreeBSD.ORG Mon Jul 9 22:59:46 2012 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 943831065670; Mon, 9 Jul 2012 22:59:45 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4A2381065676 for ; Mon, 9 Jul 2012 22:59:45 +0000 (UTC) (envelope-from brooks@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id 1A7728FC20 for ; Mon, 9 Jul 2012 22:59:45 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id q69Mxi3R066396 for ; Mon, 9 Jul 2012 22:59:44 GMT (envelope-from brooks@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id q69MxiKh066393 for perforce@freebsd.org; Mon, 9 Jul 2012 22:59:44 GMT (envelope-from brooks@freebsd.org) Date: Mon, 9 Jul 2012 22:59:44 GMT Message-Id: <201207092259.q69MxiKh066393@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to brooks@freebsd.org using -f From: Brooks Davis To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 214150 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Jul 2012 22:59:46 -0000 http://p4web.freebsd.org/@@214150?ac=10 Change 214150 by brooks@brooks_ecr_current on 2012/07/09 22:59:10 Add the ability to disable certain protection modes. Use this to disable CHERI which is not yet ready. Affected files ... .. //depot/projects/ctsrd/beribsd/src/ctsrd/browser/browser.c#7 edit Differences ... ==== //depot/projects/ctsrd/beribsd/src/ctsrd/browser/browser.c#7 (text+ko) ==== @@ -163,13 +163,14 @@ struct _sbdata { enum _sbtype sbtype; + int enabled; int bcol; int ecol; } sbdata[] = { - { SB_NONE, SB_IMG_NONE_BCOL, SB_IMG_NONE_ECOL }, - { SB_CAPSICUM, SB_IMG_CAPSICUM_BCOL, SB_IMG_CAPSICUM_ECOL }, - { SB_CHERI, SB_IMG_CHERI_BCOL, SB_IMG_CHERI_ECOL }, - { 0, 0, 0 } + { SB_NONE, 1, SB_IMG_NONE_BCOL, SB_IMG_NONE_ECOL }, + { SB_CAPSICUM, 1, SB_IMG_CAPSICUM_BCOL, SB_IMG_CAPSICUM_ECOL }, + { SB_CHERI, 0, SB_IMG_CHERI_BCOL, SB_IMG_CHERI_ECOL }, + { 0, 0, 0, 0 } }; static u_int32_t *bgimage; @@ -235,6 +236,28 @@ } static void +init_bgimage(void) +{ + int i, j, pixel, sb; + + bgimage = malloc(sizeof(u_int32_t) * fb_height * fb_width); + if (bgimage == NULL) + err(1, "malloc"); + read_png_file(BASEIMG, bgimage, fb_width, fb_height); + + for (sb = 0; sbdata[sb].sbtype != 0; sb++) { + if (sbdata[sb].enabled) + continue; + for (j = SB_MINROW; j < SB_MAXROW; j++) { + for (i = sbdata[sb].bcol; i <= sbdata[sb].ecol; i++) { + pixel = (j * fb_width) + i; + bgimage[pixel] = vwhite(((bgimage[pixel] >> 24) & 0xFF) / 2); + } + } + } +} + +static void update_sandbox(enum _sbtype type) { int bcol, ecol, i, j, pixel, value; @@ -375,6 +398,9 @@ ts->ts_x1 > sbdata[i].ecol; i++) /* do nothing */; assert(sbdata[i].sbtype != 0); + if (sbdata[i].sbtype == sbtype || + !sbdata[i].enabled) + continue; update_sandbox(sbdata[i].sbtype); return (ACT_REFRESH); } @@ -528,11 +554,7 @@ init_magic(); fb_init(); fb_load_syscons_font(NULL, "/usr/share/syscons/fonts/iso-8x16.fnt"); - - bgimage = malloc(sizeof(u_int32_t) * fb_height * fb_width); - if (bgimage == NULL) - err(1, "malloc"); - read_png_file(BASEIMG, bgimage, fb_width, fb_height); + init_bgimage(); icons = malloc(sizeof(u_int32_t) * ICON_WH * 640); if (icons == NULL)