Subject: Re: UVM aobj: Large VM objects.
To: YAMAMOTO Takashi <yamt@mwd.biglobe.ne.jp>
From: Cherry George Mathew <cherry@mahiti.org>
List: tech-kern
Date: 03/07/2006 11:28:25
>>>>> "yamt" == YAMAMOTO Takashi <yamt@mwd.biglobe.ne.jp> writes:


[...]


    yamt> however, i don't think long is appropriate here.  please
    yamt> introduce a 64-bit "page offset" type.  "typedef voff_t
    yamt> pgoff_t" should be fine.

I don't have access to CVS. Could you check in the following, if
appropriate ? 

Thanks,

--
Cherry



*** uvm_extern.h	28 Jun 2005 22:41:44 +0530	1.1.1.1
--- uvm_extern.h	07 Mar 2006 10:47:04 +0530	
***************
*** 88,93 ****
--- 88,94 ----
  
  typedef int vm_inherit_t;	/* XXX: inheritance codes */
  typedef off_t voff_t;		/* XXX: offset within a uvm_object */
+ typedef voff_t pgoff_t;		/* XXX: number of pages within a uvm object */
  
  /*
   * defines

*** uvm_aobj.c	05 Mar 2006 11:24:26 +0530	1.1.1.1
--- uvm_aobj.c	07 Mar 2006 10:43:34 +0530	
***************
*** 152,158 ****
  
  struct uvm_aobj {
  	struct uvm_object u_obj; /* has: lock, pgops, memq, #pages, #refs */
! 	int u_pages;		 /* number of pages in entire object */
  	int u_flags;		 /* the flags (see uvm_aobj.h) */
  	int *u_swslots;		 /* array of offset->swapslot mappings */
  				 /*
--- 152,158 ----
  
  struct uvm_aobj {
  	struct uvm_object u_obj; /* has: lock, pgops, memq, #pages, #refs */
! 	pgoff_t u_pages;	 /* number of pages in entire object */
  	int u_flags;		 /* the flags (see uvm_aobj.h) */
  	int *u_swslots;		 /* array of offset->swapslot mappings */
  				 /*
***************
*** 476,482 ****
  {
  	static struct uvm_aobj kernel_object_store;
  	static int kobj_alloced = 0;
! 	int pages = round_page(size) >> PAGE_SHIFT;
  	struct uvm_aobj *aobj;
  	int refs;
  
--- 476,482 ----
  {
  	static struct uvm_aobj kernel_object_store;
  	static int kobj_alloced = 0;
! 	pgoff_t pages = round_page(size) >> PAGE_SHIFT;
  	struct uvm_aobj *aobj;
  	int refs;