• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10.1/xnu-2782.1.97/osfmk/vm/

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;
364 pager = apple_protect_pager_lookup(mem_obj);
365 assert(pager->is_ready);
366 assert(pager->ref_count > 1); /* pager is alive and mapped */
368 PAGER_DEBUG(PAGER_PAGEIN, ("apple_protect_pager_data_request: %p, %llx, %x, %x, pager %p\n", mem_obj, offset, length, protection_required, pager));
373 mo_control = pager->pager_control;
420 * the vnode pager).
422 src_object = pager->backing_object;
546 ret = pager->crypt.page_decrypt((const void *)
555 pager->crypt.crypt_ops);
616 * provided by us, the pager.
685 * i.e one should not "revive" a dead pager this way.
691 apple_protect_pager_t pager;
693 pager = apple_protect_pager_lookup(mem_obj);
696 assert(pager->ref_count > 0);
697 pager->ref_count++;
705 * Removes a pager from the list of pagers.
711 apple_protect_pager_t pager)
713 assert(!pager->is_mapped);
716 pager,
719 pager->pager_queue.next = NULL;
720 pager->pager_queue.prev = NULL;
729 * with this pager.
735 * We don't need the lock because the pager has already been removed from
740 apple_protect_pager_t pager)
742 assert(pager->is_ready);
743 assert(!pager->is_mapped);
745 if (pager->backing_object != VM_OBJECT_NULL) {
746 vm_object_deallocate(pager->backing_object);
747 pager->backing_object = VM_OBJECT_NULL;
751 if(pager->crypt.crypt_end)
752 pager->crypt.crypt_end(pager->crypt.crypt_ops);
755 memory_object_destroy(pager->pager_control, 0);
761 * Release a reference on this pager and free it when the last
768 apple_protect_pager_t pager,
787 /* drop a reference on this pager */
788 pager->ref_count--;
790 if (pager->ref_count == 1) {
793 * no one is really holding on to this pager anymore.
796 apple_protect_pager_dequeue(pager);
797 /* the pager is all ours: no need for the lock now */
799 apple_protect_pager_terminate_internal(pager);
800 } else if (pager->ref_count == 0) {
804 * pager structure.
807 if (pager->pager_control != MEMORY_OBJECT_CONTROL_NULL) {
808 memory_object_control_deallocate(pager->pager_control);
809 pager->pager_control = MEMORY_OBJECT_CONTROL_NULL;
811 kfree(pager, sizeof (*pager));
812 pager = APPLE_PROTECT_PAGER_NULL;
827 * Release a reference on this pager and free it when the last
834 apple_protect_pager_t pager;
837 pager = apple_protect_pager_lookup(mem_obj);
838 apple_protect_pager_deallocate_internal(pager, FALSE);
866 apple_protect_pager_t pager;
870 pager = apple_protect_pager_lookup(mem_obj);
872 memory_object_synchronize_completed(pager->pager_control,
891 apple_protect_pager_t pager;
895 pager = apple_protect_pager_lookup(mem_obj);
898 assert(pager->is_ready);
899 assert(pager->ref_count > 0); /* pager is alive */
900 if (pager->is_mapped == FALSE) {
902 * First mapping of this pager: take an extra reference
903 * that will remain until all the mappings of this pager
906 pager->is_mapped = TRUE;
907 pager->ref_count++;
924 apple_protect_pager_t pager;
930 pager = apple_protect_pager_lookup(mem_obj);
933 if (pager->is_mapped) {
936 * reference that represents all the mappings of this pager.
944 pager->is_mapped = FALSE;
945 apple_protect_pager_deallocate_internal(pager, TRUE);
962 apple_protect_pager_t pager;
964 pager = (apple_protect_pager_t) mem_obj;
965 assert(pager->pager_ops == &apple_protect_pager_ops);
966 assert(pager->ref_count > 0);
967 return pager;
975 apple_protect_pager_t pager, pager2;
979 pager = (apple_protect_pager_t) kalloc(sizeof (*pager));
980 if (pager == APPLE_PROTECT_PAGER_NULL) {
991 pager->pager_ops = &apple_protect_pager_ops;
992 pager->pager_ikot = IKOT_MEMORY_OBJECT;
993 pager->is_ready = FALSE;/* not ready until it has a "name" */
994 pager->ref_count = 2; /* existence + setup reference */
995 pager->is_mapped = FALSE;
996 pager->pager_control = MEMORY_OBJECT_CONTROL_NULL;
997 pager->backing_object = backing_object;
998 pager->crypt = *crypt_info;
1003 /* see if anyone raced us to create a pager for the same object */
1018 vm_object_deallocate(pager->backing_object);
1019 pager->backing_object = VM_OBJECT_NULL;
1020 kfree(pager, sizeof (*pager));
1022 pager = pager2;
1023 /* let the winner make sure the pager gets ready */
1024 return pager;
1027 /* enter new pager at the head of our list of pagers */
1029 pager,
1038 kr = memory_object_create_named((memory_object_t) pager,
1044 /* the new pager is now ready to be used */
1045 pager->is_ready = TRUE;
1048 /* wakeup anyone waiting for this pager to be ready */
1049 thread_wakeup(&pager->is_ready);
1051 return pager;
1066 apple_protect_pager_t pager;
1071 pager,
1074 if (pager->backing_object == backing_object) {
1076 if (!((pager->crypt.page_decrypt == crypt_info->page_decrypt) &&
1077 (pager->crypt.crypt_ops == crypt_info->crypt_ops) )) {
1085 (queue_entry_t) pager)) {
1086 /* no existing pager for this backing object */
1087 pager = APPLE_PROTECT_PAGER_NULL;
1089 /* make sure pager doesn't disappear */
1090 pager->ref_count++;
1095 if (pager == APPLE_PROTECT_PAGER_NULL) {
1096 pager = apple_protect_pager_create(backing_object, crypt_info);
1097 if (pager == APPLE_PROTECT_PAGER_NULL) {
1103 while (!pager->is_ready) {
1106 &pager->is_ready,
1111 return (memory_object_t) pager;
1117 apple_protect_pager_t pager, prev_pager;
1126 * starting with the oldest pager at the end of the queue.
1131 for (pager = (apple_protect_pager_t)
1134 (queue_entry_t) pager);
1135 pager = prev_pager) {
1138 queue_prev(&pager->pager_queue);
1140 if (pager->ref_count == 2 &&
1141 pager->is_ready &&
1142 !pager->is_mapped) {
1143 /* this pager can be trimmed */
1145 /* remove this pager from the main list ... */
1146 apple_protect_pager_dequeue(pager);
1149 pager,
1171 pager,
1174 pager->pager_queue.next = NULL;
1175 pager->pager_queue.prev = NULL;
1176 assert(pager->ref_count == 2);
1178 * We can't call deallocate_internal() because the pager
1182 pager->ref_count--;
1183 apple_protect_pager_terminate_internal(pager);