• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.5.8/xnu-1228.15.4/osfmk/default_pager/

Lines Matching refs:ps

356 	paging_segment_t	ps;
362 ps = paging_segments[i];
363 if (ps == PAGING_SEGMENT_NULL)
371 pages_total += ps->ps_pgnum;
372 pages_free += ps->ps_clcount << ps->ps_clshift;
375 i, ps->ps_pgnum, ps->ps_clcount << ps->ps_clshift));
614 paging_segment_t ps;
640 ps = paging_segments[i];
641 if (ps != PAGING_SEGMENT_NULL && ps->ps_bs == bs) {
642 PS_LOCK(ps);
643 bs->bs_pages_free += ps->ps_clcount << ps->ps_clshift;
644 PS_UNLOCK(ps);
666 paging_segment_t ps)
736 vs, ps, upl);
800 paging_segment_t ps;
818 ps = paging_segments[i];
819 if (ps != PAGING_SEGMENT_NULL &&
820 ps->ps_bs == bs &&
821 ! ps->ps_going_away) {
822 PS_LOCK(ps);
824 ps->ps_going_away = TRUE;
825 PS_UNLOCK(ps);
827 * The "ps" segment is "off-line" now,
831 + ps->ps_pgcount)) {
841 dp_pages_free -= ps->ps_pgcount;
842 interim_pages_removed += ps->ps_pgcount;
844 error = ps_delete(ps);
862 ps = paging_segments[i];
863 if (ps != PAGING_SEGMENT_NULL &&
864 ps->ps_bs == bs &&
865 ps->ps_going_away) {
866 PS_LOCK(ps);
868 ps->ps_going_away = FALSE;
869 PS_UNLOCK(ps);
879 ps = paging_segments[i];
880 if (ps != PAGING_SEGMENT_NULL &&
881 ps->ps_bs == bs) {
882 if(ps->ps_going_away) {
885 PS_LOCK(ps);
886 kfree(ps->ps_bmap, RMAPSIZE(ps->ps_ncls));
887 kfree(ps, sizeof *ps);
892 /* Scan the entire ps array separately to make certain we find the */
936 paging_segment_t ps)
948 paging_segments[i] = ps;
952 if ((ps_select_array[ps->ps_bs->bs_priority] == BS_NOPRI) ||
953 (ps_select_array[ps->ps_bs->bs_priority] == BS_FULLPRI))
954 ps_select_array[ps->ps_bs->bs_priority] = 0;
975 paging_segment_t ps;
985 ps = paging_segments[i];
986 if (ps == PAGING_SEGMENT_NULL)
992 if (!(ps->ps_device != device
993 || offset >= ps->ps_offset + ps->ps_recnum
994 || offset + count <= ps->ps_offset)) {
1005 ps = (paging_segment_t) kalloc(sizeof (struct paging_segment));
1006 if (ps == PAGING_SEGMENT_NULL) {
1011 ps->ps_segtype = PS_PARTITION;
1012 ps->ps_device = device;
1013 ps->ps_offset = offset;
1014 ps->ps_record_shift = local_log2(vm_page_size / record_size);
1015 ps->ps_recnum = count;
1016 ps->ps_pgnum = count >> ps->ps_record_shift;
1018 ps->ps_pgcount = ps->ps_pgnum;
1019 ps->ps_clshift = local_log2(bs->bs_clsize);
1020 ps->ps_clcount = ps->ps_ncls = ps->ps_pgcount >> ps->ps_clshift;
1021 ps->ps_hint = 0;
1023 PS_LOCK_INIT(ps);
1024 ps->ps_bmap = (unsigned char *) kalloc(RMAPSIZE(ps->ps_ncls));
1025 if (!ps->ps_bmap) {
1026 kfree(ps, sizeof *ps);
1030 for (i = 0; i < ps->ps_ncls; i++) {
1031 clrbit(ps->ps_bmap, i);
1034 ps->ps_going_away = FALSE;
1035 ps->ps_bs = bs;
1037 if ((error = ps_enter(ps)) != 0) {
1038 kfree(ps->ps_bmap, RMAPSIZE(ps->ps_ncls));
1039 kfree(ps, sizeof *ps);
1044 bs->bs_pages_free += ps->ps_clcount << ps->ps_clshift;
1045 bs->bs_pages_total += ps->ps_clcount << ps->ps_clshift;
1049 dp_pages_free += ps->ps_pgcount;
1052 bs_more_space(ps->ps_clcount);
1057 ps->ps_record_shift, ps->ps_pgnum));
1315 paging_segment_t ps;
1329 ps = paging_segments[paging_segment_max];
1331 PS_LOCK(ps);
1332 if (ps->ps_going_away) {
1336 ASSERT(ps->ps_clshift >= shift);
1337 if (ps->ps_clcount) {
1338 ps->ps_clcount--;
1339 dp_pages_free -= 1 << ps->ps_clshift;
1346 lps = ps;
1350 PS_UNLOCK(ps);
1395 if ((ps = paging_segments[j]) &&
1396 (ps->ps_bs->bs_priority == i)) {
1398 * Force the ps cluster size to be
1401 PS_LOCK(ps);
1402 if (ps->ps_going_away) {
1404 } else if ((ps->ps_clcount) &&
1405 (ps->ps_clshift >= shift)) {
1408 ps->ps_clcount--;
1409 dp_pages_free -= 1 << ps->ps_clshift;
1416 PS_UNLOCK(ps);
1430 return ps;
1432 PS_UNLOCK(ps);
1458 paging_segment_t ps;
1464 * ps_select_segment will decrement cluster count on ps.
1486 ps = use_ps;
1488 PS_LOCK(ps);
1490 ASSERT(ps->ps_clcount != 0);
1492 ps->ps_clcount--;
1493 dp_pages_free -= 1 << ps->ps_clshift;
1500 PS_UNLOCK(ps);
1506 } else if ((ps = ps_select_segment(vs->vs_clshift, psindex)) ==
1544 PS_LOCK(ps);
1545 byte_num = ps->ps_hint;
1546 for (; byte_num < howmany(ps->ps_ncls, NBBY); byte_num++) {
1547 if (*(ps->ps_bmap + byte_num) != BYTEMASK) {
1549 if (isclr((ps->ps_bmap + byte_num), bit_num))
1556 ps->ps_hint = byte_num;
1560 ASSERT(cluster < ps->ps_ncls);
1562 setbit(ps->ps_bmap, cluster);
1563 PS_UNLOCK(ps);
1572 paging_segment_t ps,
1576 if (cluster >= (vm_offset_t) ps->ps_ncls)
1584 PS_LOCK(ps);
1585 clrbit(ps->ps_bmap, cluster);
1586 ++ps->ps_clcount;
1587 dp_pages_free += 1 << ps->ps_clshift;
1594 if ((cluster/NBBY) < ps->ps_hint) {
1595 ps->ps_hint = (cluster/NBBY);
1598 PS_UNLOCK(ps);
1604 if (ps_select_array[ps->ps_bs->bs_priority] == BS_FULLPRI)
1605 ps_select_array[ps->ps_bs->bs_priority] = 0;
2084 __unused paging_segment_t ps,
2229 paging_segment_t ps,
2251 device = dev_port_lookup(ps->ps_device);
2254 dev_offset = (ps->ps_offset +
2255 (offset >> (vm_page_shift - ps->ps_record_shift)));
2323 (vm_page_shift - ps->ps_record_shift));
2368 paging_segment_t ps,
2384 dev_offset = (ps->ps_offset +
2385 (offset >> (vm_page_shift - ps->ps_record_shift)));
2399 device = dev_port_lookup(ps->ps_device);
2418 BS_STAT(ps->ps_bs,
2419 ps->ps_bs->bs_pages_out_fail += atop_32(size));
2430 device = dev_port_lookup(ps->ps_device);
2444 BS_STAT(ps->ps_bs,
2445 ps->ps_bs->bs_pages_out_fail += atop_32(size));
2448 if (bytes_written & ((vm_page_size >> ps->ps_record_shift) - 1))
2451 (vm_page_shift - ps->ps_record_shift));
2471 __unused paging_segment_t ps,
2484 __unused paging_segment_t ps,
2905 paging_segment_t ps;
3166 ps = CLMAP_PS(clmap);
3172 error = ps_write_file(ps, internal_upl,
3470 paging_segment_t ps;
3546 ps = CLMAP_PS(clmap);
3547 ASSERT(ps);
3557 BS_STAT(ps->ps_bs,
3558 ps->ps_bs->bs_pages_in++);
3586 if(ps->ps_segtype == PS_PARTITION) {
3593 error = ps_read_device(ps, actual_offset, &buffer,
3598 error = ps_read_file(ps, upl, (upl_offset_t) 0, actual_offset,
3716 paging_segment_t ps;
3727 ps = paging_segments[i];
3728 if (ps == PAGING_SEGMENT_NULL)
3730 if (ps->ps_segtype != PS_FILE)
3736 if (ps->ps_vnode == (struct vnode *)vp) {
3747 ps = (paging_segment_t) kalloc(sizeof (struct paging_segment));
3748 if (ps == PAGING_SEGMENT_NULL) {
3753 ps->ps_segtype = PS_FILE;
3754 ps->ps_vnode = (struct vnode *)vp;
3755 ps->ps_offset = 0;
3756 ps->ps_record_shift = local_log2(vm_page_size / record_size);
3757 ps->ps_recnum = size;
3758 ps->ps_pgnum = size >> ps->ps_record_shift;
3760 ps->ps_pgcount = ps->ps_pgnum;
3761 ps->ps_clshift = local_log2(bs->bs_clsize);
3762 ps->ps_clcount = ps->ps_ncls = ps->ps_pgcount >> ps->ps_clshift;
3763 ps->ps_hint = 0;
3765 PS_LOCK_INIT(ps);
3766 ps->ps_bmap = (unsigned char *) kalloc(RMAPSIZE(ps->ps_ncls));
3767 if (!ps->ps_bmap) {
3768 kfree(ps, sizeof *ps);
3772 for (j = 0; j < ps->ps_ncls; j++) {
3773 clrbit(ps->ps_bmap, j);
3776 ps->ps_going_away = FALSE;
3777 ps->ps_bs = bs;
3779 if ((error = ps_enter(ps)) != 0) {
3780 kfree(ps->ps_bmap, RMAPSIZE(ps->ps_ncls));
3781 kfree(ps, sizeof *ps);
3786 bs->bs_pages_free += ps->ps_clcount << ps->ps_clshift;
3787 bs->bs_pages_total += ps->ps_clcount << ps->ps_clshift;
3789 dp_pages_free += ps->ps_pgcount;
3794 bs_more_space(ps->ps_clcount);
3799 ps->ps_record_shift, ps->ps_pgnum));
3808 paging_segment_t ps,
3824 f_offset = (vm_object_offset_t)(ps->ps_offset + offset);
3829 error = vnode_pagein(ps->ps_vnode, upl, upl_offset, f_offset, (vm_size_t)size, flags, NULL);
3849 paging_segment_t ps,
3862 f_offset = (vm_object_offset_t)(ps->ps_offset + offset);
3872 if (vnode_pageout(ps->ps_vnode, upl, upl_offset, f_offset, (vm_size_t)size, flags, NULL))