X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/b0d623f7f2ae71ed96e60569f61f9a9a27016e80..d41d1dae2cd00cc08c7982087d1c445180cad9f5:/bsd/kern/kpi_mbuf.c diff --git a/bsd/kern/kpi_mbuf.c b/bsd/kern/kpi_mbuf.c index d468e81cb..a89cfbef0 100644 --- a/bsd/kern/kpi_mbuf.c +++ b/bsd/kern/kpi_mbuf.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2009 Apple Inc. All rights reserved. + * Copyright (c) 2004-2010 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -83,7 +83,7 @@ errno_t mbuf_align_32(mbuf_t mbuf, size_t len) addr64_t mbuf_data_to_physical(void* ptr) { - return (addr64_t)(intptr_t)mcl_to_paddr(ptr); + return (addr64_t)(uintptr_t)mcl_to_paddr(ptr); } errno_t mbuf_get(mbuf_how_t how, mbuf_type_t type, mbuf_t *mbuf) @@ -1071,3 +1071,70 @@ mbuf_get_mhlen(void) { return (_MHLEN); } + +mbuf_priority_t +mbuf_get_priority(struct mbuf *m) +{ +#if !PKT_PRIORITY +#pragma unused(m) + return (MBUF_PRIORITY_NORMAL); +#else /* PKT_PRIORITY */ + mbuf_priority_t prio = MBUF_PRIORITY_NORMAL; + + if (m == NULL || !(m->m_flags & M_PKTHDR)) + return (prio); + + /* Defaults to normal; ignore anything else but background */ + if (m->m_pkthdr.prio == MBUF_PRIORITY_BACKGROUND) + prio = MBUF_PRIORITY_BACKGROUND; + + return (prio); +#endif /* PKT_PRIORITY */ +} + +mbuf_traffic_class_t +mbuf_get_traffic_class(mbuf_t m) +{ +#if !PKT_PRIORITY +#pragma unused(m) + return (MBUF_TC_BE); +#else /* PKT_PRIORITY */ + mbuf_priority_t prio = MBUF_TC_BE; + + if (m == NULL || !(m->m_flags & M_PKTHDR)) + return (prio); + + if (m->m_pkthdr.prio <= MBUF_TC_VO) + prio = m->m_pkthdr.prio; + + return (prio); +#endif /* PKT_PRIORITY */ +} + +errno_t +mbuf_set_traffic_class(mbuf_t m, mbuf_traffic_class_t tc) +{ +#if !PKT_PRIORITY +#pragma unused(m) +#pragma unused(tc) + return 0; +#else /* PKT_PRIORITY */ + errno_t error = 0; + + if (m == NULL || !(m->m_flags & M_PKTHDR)) + return EINVAL; + + switch (tc) { + case MBUF_TC_BE: + case MBUF_TC_BK: + case MBUF_TC_VI: + case MBUF_TC_VO: + m->m_pkthdr.prio = tc; + break; + default: + error = EINVAL; + break; + } + return error; +#endif /* PKT_PRIORITY */ +}