Print this page
6583 remove whole-process swapping


 422 extern struct   anon_map *anonmap_alloc(size_t, size_t, int);
 423 extern void     anonmap_free(struct anon_map *);
 424 extern void     anonmap_purge(struct anon_map *);
 425 extern void     anon_swap_free(struct anon *, struct page *);
 426 extern void     anon_decref(struct anon *);
 427 extern int      non_anon(struct anon_hdr *, ulong_t, u_offset_t *, size_t *);
 428 extern pgcnt_t  anon_pages(struct anon_hdr *, ulong_t, pgcnt_t);
 429 extern int      anon_swap_adjust(pgcnt_t);
 430 extern void     anon_swap_restore(pgcnt_t);
 431 extern struct   anon_hdr *anon_create(pgcnt_t, int);
 432 extern void     anon_release(struct anon_hdr *, pgcnt_t);
 433 extern struct   anon *anon_get_ptr(struct anon_hdr *, ulong_t);
 434 extern ulong_t  *anon_get_slot(struct anon_hdr *, ulong_t);
 435 extern struct   anon *anon_get_next_ptr(struct anon_hdr *, ulong_t *);
 436 extern int      anon_set_ptr(struct anon_hdr *, ulong_t, struct anon *, int);
 437 extern int      anon_copy_ptr(struct anon_hdr *, ulong_t,
 438                     struct anon_hdr *, ulong_t, pgcnt_t, int);
 439 extern pgcnt_t  anon_grow(struct anon_hdr *, ulong_t *, pgcnt_t, pgcnt_t, int);
 440 extern void     anon_array_enter(struct anon_map *, ulong_t,
 441                         anon_sync_obj_t *);
 442 extern int      anon_array_try_enter(struct anon_map *, ulong_t,
 443                         anon_sync_obj_t *);
 444 extern void     anon_array_exit(anon_sync_obj_t *);
 445 
 446 /*
 447  * anon_resv checks to see if there is enough swap space to fulfill a
 448  * request and if so, reserves the appropriate anonymous memory resources.
 449  * anon_checkspace just checks to see if there is space to fulfill the request,
 450  * without taking any resources.  Both return 1 if successful and 0 if not.
 451  *
 452  * Macros are provided as anon reservation is usually charged to the zone of
 453  * the current process.  In some cases (such as anon reserved by tmpfs), a
 454  * zone pointer is needed to charge the appropriate zone.
 455  */
 456 #define anon_unresv(size)               anon_unresvmem(size, curproc->p_zone)
 457 #define anon_unresv_zone(size, zone)    anon_unresvmem(size, zone)
 458 #define anon_resv(size)                 \
 459         anon_resvmem((size), 1, curproc->p_zone, 1)
 460 #define anon_resv_zone(size, zone)      anon_resvmem((size), 1, zone, 1)
 461 #define anon_checkspace(size, zone)     anon_resvmem((size), 0, zone, 0)
 462 #define anon_try_resv_zone(size, zone)  anon_resvmem((size), 1, zone, 0)
 463 




 422 extern struct   anon_map *anonmap_alloc(size_t, size_t, int);
 423 extern void     anonmap_free(struct anon_map *);
 424 extern void     anonmap_purge(struct anon_map *);
 425 extern void     anon_swap_free(struct anon *, struct page *);
 426 extern void     anon_decref(struct anon *);
 427 extern int      non_anon(struct anon_hdr *, ulong_t, u_offset_t *, size_t *);
 428 extern pgcnt_t  anon_pages(struct anon_hdr *, ulong_t, pgcnt_t);
 429 extern int      anon_swap_adjust(pgcnt_t);
 430 extern void     anon_swap_restore(pgcnt_t);
 431 extern struct   anon_hdr *anon_create(pgcnt_t, int);
 432 extern void     anon_release(struct anon_hdr *, pgcnt_t);
 433 extern struct   anon *anon_get_ptr(struct anon_hdr *, ulong_t);
 434 extern ulong_t  *anon_get_slot(struct anon_hdr *, ulong_t);
 435 extern struct   anon *anon_get_next_ptr(struct anon_hdr *, ulong_t *);
 436 extern int      anon_set_ptr(struct anon_hdr *, ulong_t, struct anon *, int);
 437 extern int      anon_copy_ptr(struct anon_hdr *, ulong_t,
 438                     struct anon_hdr *, ulong_t, pgcnt_t, int);
 439 extern pgcnt_t  anon_grow(struct anon_hdr *, ulong_t *, pgcnt_t, pgcnt_t, int);
 440 extern void     anon_array_enter(struct anon_map *, ulong_t,
 441                         anon_sync_obj_t *);


 442 extern void     anon_array_exit(anon_sync_obj_t *);
 443 
 444 /*
 445  * anon_resv checks to see if there is enough swap space to fulfill a
 446  * request and if so, reserves the appropriate anonymous memory resources.
 447  * anon_checkspace just checks to see if there is space to fulfill the request,
 448  * without taking any resources.  Both return 1 if successful and 0 if not.
 449  *
 450  * Macros are provided as anon reservation is usually charged to the zone of
 451  * the current process.  In some cases (such as anon reserved by tmpfs), a
 452  * zone pointer is needed to charge the appropriate zone.
 453  */
 454 #define anon_unresv(size)               anon_unresvmem(size, curproc->p_zone)
 455 #define anon_unresv_zone(size, zone)    anon_unresvmem(size, zone)
 456 #define anon_resv(size)                 \
 457         anon_resvmem((size), 1, curproc->p_zone, 1)
 458 #define anon_resv_zone(size, zone)      anon_resvmem((size), 1, zone, 1)
 459 #define anon_checkspace(size, zone)     anon_resvmem((size), 0, zone, 0)
 460 #define anon_try_resv_zone(size, zone)  anon_resvmem((size), 1, zone, 0)
 461