From bedab8569be5bc52110aa48b441728412c9dce19 Mon Sep 17 00:00:00 2001 From: Marc Fiuczynski Date: Tue, 28 Sep 2004 07:49:30 +0000 Subject: [PATCH] version 1 of the CKRM memory controller. --- include/linux/ckrm_mem_inline.h | 60 ++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/include/linux/ckrm_mem_inline.h b/include/linux/ckrm_mem_inline.h index a34679a0d..d9af06685 100644 --- a/include/linux/ckrm_mem_inline.h +++ b/include/linux/ckrm_mem_inline.h @@ -203,56 +203,60 @@ static inline void ckrm_mem_inc_active(struct page *page) { ckrm_mem_res_t *cls = page_class(page), *curcls; - if (likely(cls != NULL)) { - BUG_ON(test_bit(PG_ckrm_account, &page->flags)); - if (unlikely(cls != (curcls = GET_MEM_CLASS(current)))) { - cls = curcls; - ckrm_change_page_class(page, cls); - } - cls->nr_active[page_zonenum(page)]++; - incr_use_count(cls, 0); - set_bit(PG_ckrm_account, &page->flags); + if (unlikely(!cls)) { + return; } + BUG_ON(test_bit(PG_ckrm_account, &page->flags)); + if (unlikely(cls != (curcls = GET_MEM_CLASS(current)))) { + cls = curcls; + ckrm_change_page_class(page, cls); + } + cls->nr_active[page_zonenum(page)]++; + incr_use_count(cls, 0); + set_bit(PG_ckrm_account, &page->flags); } static inline void ckrm_mem_dec_active(struct page *page) { ckrm_mem_res_t *cls = page_class(page); - if (likely(cls != NULL)) { - BUG_ON(!test_bit(PG_ckrm_account, &page->flags)); - cls->nr_active[page_zonenum(page)]--; - decr_use_count(cls, 0); - clear_bit(PG_ckrm_account, &page->flags); + if (unlikely(!cls)) { + return; } + BUG_ON(!test_bit(PG_ckrm_account, &page->flags)); + cls->nr_active[page_zonenum(page)]--; + decr_use_count(cls, 0); + clear_bit(PG_ckrm_account, &page->flags); } static inline void ckrm_mem_inc_inactive(struct page *page) { ckrm_mem_res_t *cls = page_class(page), *curcls; - if (likely(cls != NULL)) { - BUG_ON(test_bit(PG_ckrm_account, &page->flags)); - if (unlikely(cls != (curcls = GET_MEM_CLASS(current)))) { - cls = curcls; - ckrm_change_page_class(page, cls); - } - cls->nr_inactive[page_zonenum(page)]++; - incr_use_count(cls, 0); - set_bit(PG_ckrm_account, &page->flags); + if (unlikely(!cls)) { + return; } + BUG_ON(test_bit(PG_ckrm_account, &page->flags)); + if (unlikely(cls != (curcls = GET_MEM_CLASS(current)))) { + cls = curcls; + ckrm_change_page_class(page, cls); + } + cls->nr_inactive[page_zonenum(page)]++; + incr_use_count(cls, 0); + set_bit(PG_ckrm_account, &page->flags); } static inline void ckrm_mem_dec_inactive(struct page *page) { ckrm_mem_res_t *cls = page_class(page); - if (likely(cls != NULL)) { - BUG_ON(!test_bit(PG_ckrm_account, &page->flags)); - cls->nr_inactive[page_zonenum(page)]--; - decr_use_count(cls, 0); - clear_bit(PG_ckrm_account, &page->flags); + if (unlikely(!cls)) { + return; } + BUG_ON(!test_bit(PG_ckrm_account, &page->flags)); + cls->nr_inactive[page_zonenum(page)]--; + decr_use_count(cls, 0); + clear_bit(PG_ckrm_account, &page->flags); } static inline int -- 2.47.0