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

Lines Matching defs:endpoint

77  * 	Rearrange endpoint structure to separate data with importantly
84 * Added comment explaining that an endpoint bufferlist must always
136 * Fixed calculation of number of buffers on an endpoint
151 * correctly compute the endpoint pointer based on the
213 * "endpoint", or "buffer").
235 * *) From endpoint sets to endpoints.
241 * play games with pointing endpoint buffer pointers into data
253 * node number and endpoint number, where the endpoint number will be
254 * the index into the endpoint array.
294 * In addition, I am going to put variables that are set at endpoint
341 * endpoint accesses) when multiple application threads will be
374 * consider this (and it's interactions with endpoint group membership)
384 * *) If you've taken a send endpoint off of the send endpoint
422 * *) The ownership of the endpoint group related members
423 * of an endpoint structure is special; see below.
425 * next send endpoint field of any endpoint.
427 * *) If an endpoint is on an endpoint group, the ownership of
428 * the the endpoint group related members of the structure
430 * owndership of the endpoint group, not the endpoint. For
432 * sail_endpoint_group pointer being set to an endpoint group.
433 * Thus one may remove an endpoint from an endpoint group
434 * without owning the endpoint (change the sail_endpoint_group
435 * pointer last). One requires both locks to add an endpoint
436 * to an endpoint group, however.
439 * addition of endpoints to endpoint groups requires
440 * modifications of pointers in other endpoint structures).
443 * association to any other structure. Specifically, endpoint
445 * endpoints may not belong to an endpoint group or have
448 * *) One consequence of the above is that endpoint groups may
450 * them, as freeing an endpoint requires it to be removed from
451 * its endpoint group, and if ownership of the endpoint group
455 * are still on endpoint groups. In practice, they are not.
456 * This is relied on by the code which frees endpoint groups,
458 * there is no way that a call to free endpoint will return
459 * with the endpoint still on the endpoint group. Since the
460 * only way for free endpoint to fail is if the endpoint is
461 * inactive, and since the endpoint is set inactive only after
462 * free endpoint (presumably a different one) confirms that it
463 * isn't on any endpoint group, this assumption is true.
466 * marked disabled while still on endpoint groups until you
472 * No modification of freelist, send endpoint list, or send
492 * PROCESSING -- Buffer held by endpoint, unprocessed. For receive endpoints,
496 * COMPLETED -- Buffer held by the endpoint, processed. For receive
505 * allocated to any newly created endpoint.
515 * ^ |\ - - - - - - - - / | | \endpoint allocate
516 * | (processed) \endpoint \
523 * +----------+ endpoint allocate / ^
526 * \ endpoint free /
537 * The choice of path from the PROCESSING state is an endpoint
538 * specific configuration option; a particular endpoint may leave a
539 * processed buffer on the endpoint, or it may release it back to the
540 * application by dropping it from the endpoint.
543 * receive endpoint (to be ready to receive messages) and the
544 * COMPLETED state on a newly allocated send endpoint.
548 * is part of the endpoint structure. Buffers owned by the
553 * endpoint is so configured, it then removes the buffer pointer from
573 * . |Filled | section is optional; the endpoint may be
587 * (potentially costly) acquiring of the endpoint flipc lock. Since
590 * any buffers on the endpoint, and then indirection of the acquire
594 * endpoint, it is a requirement that all buffer pointers on the
643 * An endpoint is the data structure used for communicating buffers,
647 * the endpoint structures themselves to be fixed size for easy
690 /* Type of endpoint (send, recv, etc). Duplicated in private
700 * the endpoint)?
702 * sail_enabled (volatile) -- Is the endpoint enabled? This isn't
704 * endpoint deallocation.
769 volatile unsigned long sme_overruns; /* For a receive endpoint, counter for
781 * to find stuff to do. Also used for endpoint free list.
801 * For endpoint group membership.
803 flipc_cb_ptr pail_next_eg_endpoint; /* Next endpoint in endpoint group.
805 flipc_cb_ptr sail_epgroup; /* Direct pointer to endpoint group that
830 #define NEXT_BUFFERLIST_PTR(bufferlist_ptr, endpoint, suf) \
832 == ((endpoint)->const ## suf ## _next_buffer_list)) ? \
833 ((endpoint)->const ## suf ## _my_buffer_list) : \
835 #define NEXT_BUFFERLIST_PTR_ME(bufferlist_ptr, endpoint) \
836 NEXT_BUFFERLIST_PTR(bufferlist_ptr, endpoint, dm)
837 #define NEXT_BUFFERLIST_PTR_AIL(bufferlist_ptr, endpoint) \
838 NEXT_BUFFERLIST_PTR(bufferlist_ptr, endpoint, da)
848 *) The endpoint.
881 #define ENDPOINT_ACQUIRE_OK(acquire_cbptr, tmp_cbptr, endpoint) \
882 ((acquire_cbptr) = (endpoint)->shrd_acquire_ptr, \
883 ENDPOINT_SYNCNE_CHECK(acquire_cbptr, (endpoint)->pail_process_ptr, \
884 (endpoint)->sme_process_ptr, tmp_cbptr))
886 #define ENDPOINT_PROCESS_OK(process_cbptr, tmp_cbptr, endpoint) \
887 ((process_cbptr) = (endpoint)->sme_process_ptr, \
888 ENDPOINT_SYNCNE_CHECK(process_cbptr, (endpoint)->pme_release_ptr, \
889 (endpoint)->sail_release_ptr, tmp_cbptr))
891 #define NODPB_ENDPOINT_RELEASE_OK(release_cbptr, tmp_cbptr, endpoint) \
892 ((release_cbptr) = (endpoint)->sail_release_ptr, \
893 (tmp_cbptr) = (endpoint)->shrd_acquire_ptr, \
894 (NEXT_BUFFERLIST_PTR_AIL(release_cbptr, endpoint) \
898 #define DPB_ENDPOINT_RELEASE_OK(release_cbptr, tmp_cbptr, endpoint) \
899 (release_cbptr = (endpoint)->sail_release_ptr, \
901 (endpoint)->constda_next_buffer_list) \
902 ? ENDPOINT_SYNCNE_CHECK((endpoint)->constda_my_buffer_list, \
903 (endpoint)->pail_process_ptr, \
904 (endpoint)->sme_process_ptr, \
907 (endpoint)->pail_process_ptr, \
908 (endpoint)->sme_process_ptr, \
916 #define BUFFERS_ON_ENDPOINT_AIL(acquire_ptr, release_ptr, endpoint) \
919 : ((((release_ptr) - (endpoint)->constda_my_buffer_list) \
920 + ((endpoint)->constda_next_buffer_list - acquire_ptr)) \
931 * a semaphore to be used for wakeups on that endpoint set.
941 with this endpoint group in the
956 flipc_cb_ptr pail_first_endpoint; /* First endpoint in the group. The
959 flipc_cb_ptr pail_free; /* Used to link this endpoint onto
981 * endpoint, and is allocated and freed with that endpoint. We still
1016 * Proper manipulation of the send endpoint list.
1019 * send endpoint list is especially tricky. There is no problem with
1021 * endpoint off of the list. However, we must be very sure before
1022 * modifying the pointer *in* the send endpoint that the ME isn't
1023 * currently working in that send endpoint (else it could be sent off
1027 * endpoint removed, after the removal but before the
1029 * *) If we can always be sure that the send endpoint link in the
1030 * endpoint structure has a valid value, we can simply let the
1035 * endpoint round-robinning.
1083 struct flipc_cb_type_ctl endpoint;
1113 /* Send endpoint list starts here. */