From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wi0-f181.google.com (mail-wi0-f181.google.com [209.85.212.181]) by dpdk.org (Postfix) with ESMTP id 42ACBAFD5 for ; Fri, 18 Apr 2014 14:56:52 +0200 (CEST) Received: by mail-wi0-f181.google.com with SMTP id hm4so679698wib.8 for ; Fri, 18 Apr 2014 05:56:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=fowMQMlK12Alat6KfVC/YTGtkQDFYfnMJpE8qqc2Cnw=; b=OOlto9ldDCEiOWd9u7fOompwOZaRWtd/CJRCbmFDsOGLGG8jeUQJ4Gm5Kr3JwQqKkA vl6EOjV88/Y3S0SA8uy+uIMX5O4QJ+giZxMR2IPk943v3c2afDbvhlOBBDDMTcT7SZeQ TpkrxK7E+U9hjwljOXNTuL+cy8i4FPtbobStPQEoA/Fqu0Pq+gCx2HW0PoRxs78NHv+B 41fzLT3KOsBCT4ZNT/wyCLBtQfQOZNeEWAw4FvsCHSBoMCLpekmNuhZ/nYwNnFpb8BXQ lV7CeAIIw0I+7pX/6TY65G9O+wqxdrSiIkcEsAXCjTVB/owL/BxRX2YcZjZ+H37jndAm jfsA== X-Gm-Message-State: ALoCoQkaF63JPlk0acOJ3vlQgECk5zXTGa+SK05GB2JnVw9PDOoQk+NsuHYakNrKp8AhPBsIpeZu X-Received: by 10.194.63.236 with SMTP id j12mr16495399wjs.5.1397825813310; Fri, 18 Apr 2014 05:56:53 -0700 (PDT) Received: from alcyon.dev.6wind.com (6wind.net2.nerim.net. [213.41.180.237]) by mx.google.com with ESMTPSA id h1sm43508961wjy.7.2014.04.18.05.56.52 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 18 Apr 2014 05:56:52 -0700 (PDT) From: David Marchand To: dev@dpdk.org Date: Fri, 18 Apr 2014 14:56:18 +0200 Message-Id: <1397825778-24334-3-git-send-email-david.marchand@6wind.com> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1397825778-24334-1-git-send-email-david.marchand@6wind.com> References: <20140415144440.GD3557@hmsreliant.think-freely.org> <1397825778-24334-1-git-send-email-david.marchand@6wind.com> Subject: [dpdk-dev] [PATCH 2/2] malloc: simplify heap initialisation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Apr 2014 12:56:53 -0000 There should be no real need for this initialised field as the whole structure is set to 0 in rte_config_init() by primary process, and secondary processes wait for this to happen before anything else (looking at mem_config magic). Signed-off-by: David Marchand --- lib/librte_eal/common/include/rte_malloc_heap.h | 7 ----- lib/librte_malloc/malloc_heap.c | 33 ----------------------- 2 files changed, 40 deletions(-) diff --git a/lib/librte_eal/common/include/rte_malloc_heap.h b/lib/librte_eal/common/include/rte_malloc_heap.h index ea2a3f5..5e139cf 100644 --- a/lib/librte_eal/common/include/rte_malloc_heap.h +++ b/lib/librte_eal/common/include/rte_malloc_heap.h @@ -37,17 +37,10 @@ #include #include -enum heap_state { - NOT_INITIALISED = 0, - INITIALISING, - INITIALISED -}; - /** * Structure to hold malloc heap */ struct malloc_heap { - enum heap_state volatile initialised; rte_spinlock_t lock; struct malloc_elem * volatile free_head; unsigned mz_count; diff --git a/lib/librte_malloc/malloc_heap.c b/lib/librte_malloc/malloc_heap.c index 375f212..882749c 100644 --- a/lib/librte_malloc/malloc_heap.c +++ b/lib/librte_malloc/malloc_heap.c @@ -123,33 +123,6 @@ malloc_heap_add_memzone(struct malloc_heap *heap, size_t size, unsigned align) } /* - * initialise a malloc heap object. The heap is locked with a private - * lock while being initialised. This function should only be called the - * first time a thread calls malloc - if even then, as heaps are per-socket - * not per-thread. - */ -static void -malloc_heap_init(struct malloc_heap *heap) -{ - struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config; - - rte_eal_mcfg_wait_complete(mcfg); - while (heap->initialised != INITIALISED) { - if (rte_atomic32_cmpset( - (volatile uint32_t*)&heap->initialised, - NOT_INITIALISED, INITIALISING)) { - - heap->free_head = NULL; - heap->mz_count = 0; - heap->alloc_count = 0; - heap->total_size = 0; - rte_spinlock_init(&heap->lock); - heap->initialised = INITIALISED; - } - } -} - -/* * Iterates through the freelist for a heap to find a free element * which can store data of the required size and with the requested alignment. * Returns null on failure, or pointer to element on success, with the pointer @@ -193,9 +166,6 @@ void * malloc_heap_alloc(struct malloc_heap *heap, const char *type __attribute__((unused)), size_t size, unsigned align) { - if (!heap->initialised) - malloc_heap_init(heap); - size = CACHE_LINE_ROUNDUP(size); align = CACHE_LINE_ROUNDUP(align); rte_spinlock_lock(&heap->lock); @@ -223,9 +193,6 @@ int malloc_heap_get_stats(const struct malloc_heap *heap, struct rte_malloc_socket_stats *socket_stats) { - if (!heap->initialised) - return -1; - struct malloc_elem *elem = heap->free_head; /* Initialise variables for heap */ -- 1.7.10.4