Lines Matching defs:pager

134 	"apple protect pager"
146 boolean_t is_ready; /* is this pager ready ? */
187 void apple_protect_pager_dequeue(apple_protect_pager_t pager);
188 void apple_protect_pager_deallocate_internal(apple_protect_pager_t pager,
190 void apple_protect_pager_terminate_internal(apple_protect_pager_t pager);
235 apple_protect_pager_t pager;
246 pager = apple_protect_pager_lookup(mem_obj);
250 pager->pager_control = control;
329 apple_protect_pager_t pager;
363 pager = apple_protect_pager_lookup(mem_obj);
364 assert(pager->is_ready);
365 assert(pager->ref_count > 1); /* pager is alive and mapped */
367 PAGER_DEBUG(PAGER_PAGEIN, ("apple_protect_pager_data_request: %p, %llx, %x, %x, pager %p\n", mem_obj, offset, length, protection_required, pager));
372 mo_control = pager->pager_control;
419 * the vnode pager).
421 src_object = pager->backing_object;
540 ret = pager->crypt.page_decrypt((const void *) src_vaddr,
543 pager->crypt.crypt_ops);
600 * provided by us, the pager.
669 * i.e one should not "revive" a dead pager this way.
675 apple_protect_pager_t pager;
677 pager = apple_protect_pager_lookup(mem_obj);
680 assert(pager->ref_count > 0);
681 pager->ref_count++;
689 * Removes a pager from the list of pagers.
695 apple_protect_pager_t pager)
697 assert(!pager->is_mapped);
700 pager,
703 pager->pager_queue.next = NULL;
704 pager->pager_queue.prev = NULL;
713 * with this pager.
719 * We don't need the lock because the pager has already been removed from
724 apple_protect_pager_t pager)
726 assert(pager->is_ready);
727 assert(!pager->is_mapped);
729 if (pager->backing_object != VM_OBJECT_NULL) {
730 vm_object_deallocate(pager->backing_object);
731 pager->backing_object = VM_OBJECT_NULL;
735 if(pager->crypt.crypt_end)
736 pager->crypt.crypt_end(pager->crypt.crypt_ops);
739 memory_object_destroy(pager->pager_control, 0);
745 * Release a reference on this pager and free it when the last
752 apple_protect_pager_t pager,
771 /* drop a reference on this pager */
772 pager->ref_count--;
774 if (pager->ref_count == 1) {
777 * no one is really holding on to this pager anymore.
780 apple_protect_pager_dequeue(pager);
781 /* the pager is all ours: no need for the lock now */
783 apple_protect_pager_terminate_internal(pager);
784 } else if (pager->ref_count == 0) {
788 * pager structure.
791 if (pager->pager_control != MEMORY_OBJECT_CONTROL_NULL) {
792 memory_object_control_deallocate(pager->pager_control);
793 pager->pager_control = MEMORY_OBJECT_CONTROL_NULL;
795 kfree(pager, sizeof (*pager));
796 pager = APPLE_PROTECT_PAGER_NULL;
811 * Release a reference on this pager and free it when the last
818 apple_protect_pager_t pager;
821 pager = apple_protect_pager_lookup(mem_obj);
822 apple_protect_pager_deallocate_internal(pager, FALSE);
850 apple_protect_pager_t pager;
854 pager = apple_protect_pager_lookup(mem_obj);
856 memory_object_synchronize_completed(pager->pager_control,
875 apple_protect_pager_t pager;
879 pager = apple_protect_pager_lookup(mem_obj);
882 assert(pager->is_ready);
883 assert(pager->ref_count > 0); /* pager is alive */
884 if (pager->is_mapped == FALSE) {
886 * First mapping of this pager: take an extra reference
887 * that will remain until all the mappings of this pager
890 pager->is_mapped = TRUE;
891 pager->ref_count++;
908 apple_protect_pager_t pager;
914 pager = apple_protect_pager_lookup(mem_obj);
917 if (pager->is_mapped) {
920 * reference that represents all the mappings of this pager.
928 pager->is_mapped = FALSE;
929 apple_protect_pager_deallocate_internal(pager, TRUE);
946 apple_protect_pager_t pager;
948 pager = (apple_protect_pager_t) mem_obj;
949 assert(pager->pager_ops == &apple_protect_pager_ops);
950 assert(pager->ref_count > 0);
951 return pager;
959 apple_protect_pager_t pager, pager2;
963 pager = (apple_protect_pager_t) kalloc(sizeof (*pager));
964 if (pager == APPLE_PROTECT_PAGER_NULL) {
975 pager->pager_ops = &apple_protect_pager_ops;
976 pager->pager_ikot = IKOT_MEMORY_OBJECT;
977 pager->is_ready = FALSE;/* not ready until it has a "name" */
978 pager->ref_count = 2; /* existence + setup reference */
979 pager->is_mapped = FALSE;
980 pager->pager_control = MEMORY_OBJECT_CONTROL_NULL;
981 pager->backing_object = backing_object;
982 pager->crypt = *crypt_info;
987 /* see if anyone raced us to create a pager for the same object */
1002 vm_object_deallocate(pager->backing_object);
1003 pager->backing_object = VM_OBJECT_NULL;
1004 kfree(pager, sizeof (*pager));
1006 pager = pager2;
1007 /* let the winner make sure the pager gets ready */
1008 return pager;
1011 /* enter new pager at the head of our list of pagers */
1013 pager,
1022 kr = memory_object_create_named((memory_object_t) pager,
1028 /* the new pager is now ready to be used */
1029 pager->is_ready = TRUE;
1032 /* wakeup anyone waiting for this pager to be ready */
1033 thread_wakeup(&pager->is_ready);
1035 return pager;
1050 apple_protect_pager_t pager;
1055 pager,
1058 if (pager->backing_object == backing_object) {
1060 if (!((pager->crypt.page_decrypt == crypt_info->page_decrypt) &&
1061 (pager->crypt.crypt_ops == crypt_info->crypt_ops) )) {
1069 (queue_entry_t) pager)) {
1070 /* no existing pager for this backing object */
1071 pager = APPLE_PROTECT_PAGER_NULL;
1073 /* make sure pager doesn't disappear */
1074 pager->ref_count++;
1079 if (pager == APPLE_PROTECT_PAGER_NULL) {
1080 pager = apple_protect_pager_create(backing_object, crypt_info);
1081 if (pager == APPLE_PROTECT_PAGER_NULL) {
1087 while (!pager->is_ready) {
1090 &pager->is_ready,
1095 return (memory_object_t) pager;
1101 apple_protect_pager_t pager, prev_pager;
1110 * starting with the oldest pager at the end of the queue.
1115 for (pager = (apple_protect_pager_t)
1118 (queue_entry_t) pager);
1119 pager = prev_pager) {
1122 queue_prev(&pager->pager_queue);
1124 if (pager->ref_count == 2 &&
1125 pager->is_ready &&
1126 !pager->is_mapped) {
1127 /* this pager can be trimmed */
1129 /* remove this pager from the main list ... */
1130 apple_protect_pager_dequeue(pager);
1133 pager,
1155 pager,
1158 pager->pager_queue.next = NULL;
1159 pager->pager_queue.prev = NULL;
1160 assert(pager->ref_count == 2);
1162 * We can't call deallocate_internal() because the pager
1166 pager->ref_count--;
1167 apple_protect_pager_terminate_internal(pager);