Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Wed, 23 Oct 2002 05:31:14 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Wed, 23 Oct 2002 05:29:56 -0400 Received: from w032.z064001165.sjc-ca.dsl.cnc.net ([64.1.165.32]:1092 "EHLO nakedeye.aparity.com") by vger.kernel.org with ESMTP id ; Wed, 23 Oct 2002 05:29:49 -0400 Date: Wed, 23 Oct 2002 02:44:16 -0700 (PDT) From: "Matt D. Robinson" To: linux-kernel@vger.kernel.org cc: lkcd-devel@lists.sourceforge.net Subject: [PATCH] LKCD for 2.5.44 (4/8): add in use for page alloc/free In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2716 Lines: 89 This adds in-use tag for dump ordering capabilities (so that pages in use are dumped first). include/linux/page-flags.h | 5 +++++ mm/page_alloc.c | 22 +++++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff -Naur linux-2.5.44.orig/include/linux/page-flags.h linux-2.5.44.lkcd/include/linux/page-flags.h --- linux-2.5.44.orig/include/linux/page-flags.h Fri Oct 18 21:02:26 2002 +++ linux-2.5.44.lkcd/include/linux/page-flags.h Sat Oct 19 12:39:15 2002 @@ -68,6 +68,7 @@ #define PG_chainlock 15 /* lock bit for ->pte_chain */ #define PG_direct 16 /* ->pte_chain points directly at pte */ +#define PG_inuse 17 /* * Global page accounting. One instance per CPU. Only unsigned longs are @@ -228,6 +229,10 @@ #define ClearPageDirect(page) clear_bit(PG_direct, &(page)->flags) #define TestClearPageDirect(page) test_and_clear_bit(PG_direct, &(page)->flags) +#define PageInuse(page) test_bit(PG_inuse, &(page)->flags) +#define SetPageInuse(page) __set_bit(PG_inuse, &(page)->flags) +#define ClearPageInuse(page) __clear_bit(PG_inuse, &(page)->flags) + /* * The PageSwapCache predicate doesn't use a PG_flag at this time, * but it may again do so one day. diff -Naur linux-2.5.44.orig/mm/page_alloc.c linux-2.5.44.lkcd/mm/page_alloc.c --- linux-2.5.44.orig/mm/page_alloc.c Fri Oct 18 21:01:09 2002 +++ linux-2.5.44.lkcd/mm/page_alloc.c Sat Oct 19 12:39:15 2002 @@ -88,6 +88,14 @@ struct free_area *area; struct page *base; struct zone *zone; + unsigned int i; + + i = 1UL << order; + page += i; + do { + page--; + ClearPageInuse(page); + } while (--i); mod_page_state(pgfree, 1<mapping); BUG_ON(PagePrivate(page)); BUG_ON(PageLocked(page)); @@ -224,7 +240,7 @@ if (bad_range(zone, page)) BUG(); - prep_new_page(page); + prep_new_page(page, order); return page; } curr_order++; @@ -291,7 +307,7 @@ list_del(entry); page = tmp; current->nr_local_pages--; - prep_new_page(page); + prep_new_page(page, order); break; } } while ((entry = entry->next) != local_pages); - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/