From owner-p4-projects@FreeBSD.ORG Fri May 8 20:36:11 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 660441065678; Fri, 8 May 2009 20:36:11 +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 1F2461065670 for ; Fri, 8 May 2009 20:36:11 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id E7E718FC1E for ; Fri, 8 May 2009 20:36:10 +0000 (UTC) (envelope-from zec@fer.hr) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n48KaA0i005792 for ; Fri, 8 May 2009 20:36:10 GMT (envelope-from zec@fer.hr) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n48KaAgb005790 for perforce@freebsd.org; Fri, 8 May 2009 20:36:10 GMT (envelope-from zec@fer.hr) Date: Fri, 8 May 2009 20:36:10 GMT Message-Id: <200905082036.n48KaAgb005790@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@fer.hr using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 161790 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 May 2009 20:36:13 -0000 http://perforce.freebsd.org/chv.cgi?CH=161790 Change 161790 by zec@zec_tpx32 on 2009/05/08 20:36:01 Allocate memory for vimage structs in vi_alloc() which can be called via the mgmt API on multiple instances, instead of directly in vi_init(), which is called only once by SYSINIT framework. Affected files ... .. //depot/projects/vimage-commit2/src/sys/kern/kern_vimage.c#33 edit Differences ... ==== //depot/projects/vimage-commit2/src/sys/kern/kern_vimage.c#33 (text+ko) ==== @@ -589,7 +589,7 @@ void *mem = malloc(vmi->vmi_size, M_VNET, M_NOWAIT | M_ZERO); if (mem == NULL) /* XXX should return error, not panic. */ - panic("vi_alloc: malloc for %s\n", vmi->vmi_name); + panic("malloc for %s\n", vmi->vmi_name); curvnet->mod_data[vmi->vmi_id] = mem; } #endif @@ -736,11 +736,6 @@ static void vi_init(void *unused) { -#ifdef VIMAGE - struct vimage *vip; - struct vprocg *vprocg; - struct vnet *vnet; -#endif TAILQ_INIT(&vnet_modlink_head); TAILQ_INIT(&vnet_modpending_head); @@ -750,26 +745,14 @@ LIST_INIT(&vprocg_head); LIST_INIT(&vnet_head); - vip = malloc(sizeof(struct vimage), M_VIMAGE, M_NOWAIT | M_ZERO); - if (vip == NULL) - panic("malloc failed for struct vimage"); - LIST_INSERT_HEAD(&vimage_head, vip, vi_le); + mtx_init(&vnet_list_refc_mtx, "vnet_list_refc_mtx", NULL, MTX_DEF); + cv_init(&vnet_list_condvar, "vnet_list_condvar"); - vprocg = malloc(sizeof(struct vprocg), M_VPROCG, M_NOWAIT | M_ZERO); - if (vprocg == NULL) - panic("malloc failed for struct vprocg"); - vip->v_procg = vprocg; - LIST_INSERT_HEAD(&vprocg_head, vprocg, vprocg_le); - - vnet = malloc(sizeof(struct vnet), M_VNET, M_NOWAIT | M_ZERO); - if (vnet == NULL) - panic("vi_alloc: malloc failed"); - LIST_INSERT_HEAD(&vnet_head, vnet, vnet_le); - vnet->vnet_magic_n = VNET_MAGIC_N; - vip->v_net = vnet; + /* Default image has no parent and no name. */ + vi_alloc(NULL, ""); /* - * We MUST clear curvnet in vi_init_done before going SMP, + * We MUST clear curvnet in vi_init_done() before going SMP, * otherwise CURVNET_SET() macros would scream about unnecessary * curvnet recursions. */