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

Lines Matching refs:pager

133 	"apple protect pager"
145 boolean_t is_ready; /* is this pager ready ? */
179 void apple_protect_pager_dequeue(apple_protect_pager_t pager);
180 void apple_protect_pager_deallocate_internal(apple_protect_pager_t pager,
182 void apple_protect_pager_terminate_internal(apple_protect_pager_t pager);
224 apple_protect_pager_t pager;
235 pager = apple_protect_pager_lookup(mem_obj);
239 pager->pager_control = control;
318 apple_protect_pager_t pager;
346 pager = apple_protect_pager_lookup(mem_obj);
347 assert(pager->is_ready);
348 assert(pager->ref_count > 1); /* pager is alive and mapped */
350 PAGER_DEBUG(PAGER_PAGEIN, ("apple_protect_pager_data_request: %p, %llx, %x, %x, pager %p\n", mem_obj, offset, length, protection_required, pager));
355 mo_control = pager->pager_control;
402 * the vnode pager).
404 src_object = pager->backing_object;
517 pager->crypt.page_decrypt((const void *) src_vaddr,
519 pager->crypt.crypt_ops);
555 * provided by us, the pager.
597 * i.e one should not "revive" a dead pager this way.
603 apple_protect_pager_t pager;
605 pager = apple_protect_pager_lookup(mem_obj);
608 assert(pager->ref_count > 0);
609 pager->ref_count++;
617 * Removes a pager from the list of pagers.
623 apple_protect_pager_t pager)
625 assert(!pager->is_mapped);
628 pager,
631 pager->pager_queue.next = NULL;
632 pager->pager_queue.prev = NULL;
641 * with this pager.
647 * We don't need the lock because the pager has already been removed from
652 apple_protect_pager_t pager)
654 assert(pager->is_ready);
655 assert(!pager->is_mapped);
657 if (pager->backing_object != VM_OBJECT_NULL) {
658 vm_object_deallocate(pager->backing_object);
659 pager->backing_object = VM_OBJECT_NULL;
663 memory_object_destroy(pager->pager_control, 0);
666 if(pager->crypt.crypt_end)
667 pager->crypt.crypt_end(pager->crypt.crypt_ops);
673 * Release a reference on this pager and free it when the last
680 apple_protect_pager_t pager,
699 /* drop a reference on this pager */
700 pager->ref_count--;
702 if (pager->ref_count == 1) {
705 * no one is really holding on to this pager anymore.
708 apple_protect_pager_dequeue(pager);
709 /* the pager is all ours: no need for the lock now */
711 apple_protect_pager_terminate_internal(pager);
712 } else if (pager->ref_count == 0) {
716 * pager structure.
719 if (pager->pager_control != MEMORY_OBJECT_CONTROL_NULL) {
720 memory_object_control_deallocate(pager->pager_control);
721 pager->pager_control = MEMORY_OBJECT_CONTROL_NULL;
723 kfree(pager, sizeof (*pager));
724 pager = APPLE_PROTECT_PAGER_NULL;
739 * Release a reference on this pager and free it when the last
746 apple_protect_pager_t pager;
749 pager = apple_protect_pager_lookup(mem_obj);
750 apple_protect_pager_deallocate_internal(pager, FALSE);
778 apple_protect_pager_t pager;
782 pager = apple_protect_pager_lookup(mem_obj);
784 memory_object_synchronize_completed(pager->pager_control,
803 apple_protect_pager_t pager;
807 pager = apple_protect_pager_lookup(mem_obj);
810 assert(pager->is_ready);
811 assert(pager->ref_count > 0); /* pager is alive */
812 if (pager->is_mapped == FALSE) {
814 * First mapping of this pager: take an extra reference
815 * that will remain until all the mappings of this pager
818 pager->is_mapped = TRUE;
819 pager->ref_count++;
836 apple_protect_pager_t pager;
842 pager = apple_protect_pager_lookup(mem_obj);
845 if (pager->is_mapped) {
848 * reference that represents all the mappings of this pager.
856 pager->is_mapped = FALSE;
857 apple_protect_pager_deallocate_internal(pager, TRUE);
874 apple_protect_pager_t pager;
876 pager = (apple_protect_pager_t) mem_obj;
877 assert(pager->pager_ops == &apple_protect_pager_ops);
878 assert(pager->ref_count > 0);
879 return pager;
887 apple_protect_pager_t pager, pager2;
891 pager = (apple_protect_pager_t) kalloc(sizeof (*pager));
892 if (pager == APPLE_PROTECT_PAGER_NULL) {
903 pager->pager_ops = &apple_protect_pager_ops;
904 pager->pager_ikot = IKOT_MEMORY_OBJECT;
905 pager->is_ready = FALSE;/* not ready until it has a "name" */
906 pager->ref_count = 2; /* existence + setup reference */
907 pager->is_mapped = FALSE;
908 pager->pager_control = MEMORY_OBJECT_CONTROL_NULL;
909 pager->backing_object = backing_object;
910 pager->crypt = *crypt_info;
915 /* see if anyone raced us to create a pager for the same object */
930 vm_object_deallocate(pager->backing_object);
931 pager->backing_object = VM_OBJECT_NULL;
932 kfree(pager, sizeof (*pager));
934 pager = pager2;
935 /* let the winner make sure the pager gets ready */
936 return pager;
939 /* enter new pager at the head of our list of pagers */
941 pager,
950 kr = memory_object_create_named((memory_object_t) pager,
956 /* the new pager is now ready to be used */
957 pager->is_ready = TRUE;
960 /* wakeup anyone waiting for this pager to be ready */
961 thread_wakeup(&pager->is_ready);
963 return pager;
978 apple_protect_pager_t pager;
983 pager,
986 if (pager->backing_object == backing_object) {
988 if (!((pager->crypt.page_decrypt == crypt_info->page_decrypt) &&
989 (pager->crypt.crypt_ops == crypt_info->crypt_ops) )) {
997 (queue_entry_t) pager)) {
998 /* no existing pager for this backing object */
999 pager = APPLE_PROTECT_PAGER_NULL;
1001 /* make sure pager doesn't disappear */
1002 pager->ref_count++;
1007 if (pager == APPLE_PROTECT_PAGER_NULL) {
1008 pager = apple_protect_pager_create(backing_object, crypt_info);
1009 if (pager == APPLE_PROTECT_PAGER_NULL) {
1015 while (!pager->is_ready) {
1016 thread_sleep_mutex(&pager->is_ready,
1022 return (memory_object_t) pager;
1028 apple_protect_pager_t pager, prev_pager;
1037 * starting with the oldest pager at the end of the queue.
1042 for (pager = (apple_protect_pager_t)
1045 (queue_entry_t) pager);
1046 pager = prev_pager) {
1049 queue_prev(&pager->pager_queue);
1051 if (pager->ref_count == 2 &&
1052 pager->is_ready &&
1053 !pager->is_mapped) {
1054 /* this pager can be trimmed */
1056 /* remove this pager from the main list ... */
1057 apple_protect_pager_dequeue(pager);
1060 pager,
1082 pager,
1085 pager->pager_queue.next = NULL;
1086 pager->pager_queue.prev = NULL;
1087 assert(pager->ref_count == 2);
1089 * We can't call deallocate_internal() because the pager
1093 pager->ref_count--;
1094 apple_protect_pager_terminate_internal(pager);