\hypertarget{group__hwlocality__advanced__io}{\section{Advanced I/\+O object traversal helpers}
\label{group__hwlocality__advanced__io}\index{Advanced I/\+O object traversal helpers@{Advanced I/\+O object traversal helpers}}
}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static \+\_\+\+\_\+hwloc\+\_\+inline \hyperlink{group__hwlocality__objects_ga79b8ab56877ef99ac59b833203391c7d}{hwloc\+\_\+obj\+\_\+t} \hyperlink{group__hwlocality__advanced__io_ga3603275746a8792e54415d79763aa9e9}{hwloc\+\_\+get\+\_\+non\+\_\+io\+\_\+ancestor\+\_\+obj} (\hyperlink{group__hwlocality__topology_ga9d1e76ee15a7dee158b786c30b6a6e38}{hwloc\+\_\+topology\+\_\+t} topology \+\_\+\+\_\+hwloc\+\_\+attribute\+\_\+unused, \hyperlink{group__hwlocality__objects_ga79b8ab56877ef99ac59b833203391c7d}{hwloc\+\_\+obj\+\_\+t} ioobj)
\begin{DoxyCompactList}\small\item\em Get the first non-\/\+I/\+O ancestor object. \end{DoxyCompactList}\item 
static \+\_\+\+\_\+hwloc\+\_\+inline \hyperlink{group__hwlocality__objects_ga79b8ab56877ef99ac59b833203391c7d}{hwloc\+\_\+obj\+\_\+t} \hyperlink{group__hwlocality__advanced__io_gad6e1ed122ef3b6e098538d75acd5e3f6}{hwloc\+\_\+get\+\_\+next\+\_\+pcidev} (\hyperlink{group__hwlocality__topology_ga9d1e76ee15a7dee158b786c30b6a6e38}{hwloc\+\_\+topology\+\_\+t} topology, \hyperlink{group__hwlocality__objects_ga79b8ab56877ef99ac59b833203391c7d}{hwloc\+\_\+obj\+\_\+t} prev)
\begin{DoxyCompactList}\small\item\em Get the next P\+C\+I device in the system. \end{DoxyCompactList}\item 
\hypertarget{group__hwlocality__advanced__io_ga546e1d690c63fb24177f3013ed78ceb1}{static \+\_\+\+\_\+hwloc\+\_\+inline \hyperlink{group__hwlocality__objects_ga79b8ab56877ef99ac59b833203391c7d}{hwloc\+\_\+obj\+\_\+t} \hyperlink{group__hwlocality__advanced__io_ga546e1d690c63fb24177f3013ed78ceb1}{hwloc\+\_\+get\+\_\+pcidev\+\_\+by\+\_\+busid} (\hyperlink{group__hwlocality__topology_ga9d1e76ee15a7dee158b786c30b6a6e38}{hwloc\+\_\+topology\+\_\+t} topology, unsigned domain, unsigned bus, unsigned dev, unsigned func)}\label{group__hwlocality__advanced__io_ga546e1d690c63fb24177f3013ed78ceb1}

\begin{DoxyCompactList}\small\item\em Find the P\+C\+I device object matching the P\+C\+I bus id given domain, bus device and function P\+C\+I bus id. \end{DoxyCompactList}\item 
\hypertarget{group__hwlocality__advanced__io_ga9d5643f2e337fe1b98e7cce5c1ecb74e}{static \+\_\+\+\_\+hwloc\+\_\+inline \hyperlink{group__hwlocality__objects_ga79b8ab56877ef99ac59b833203391c7d}{hwloc\+\_\+obj\+\_\+t} \hyperlink{group__hwlocality__advanced__io_ga9d5643f2e337fe1b98e7cce5c1ecb74e}{hwloc\+\_\+get\+\_\+pcidev\+\_\+by\+\_\+busidstring} (\hyperlink{group__hwlocality__topology_ga9d1e76ee15a7dee158b786c30b6a6e38}{hwloc\+\_\+topology\+\_\+t} topology, const char $\ast$busid)}\label{group__hwlocality__advanced__io_ga9d5643f2e337fe1b98e7cce5c1ecb74e}

\begin{DoxyCompactList}\small\item\em Find the P\+C\+I device object matching the P\+C\+I bus id given as a string xxxx\+:yy\+:zz.\+t or yy\+:zz.\+t. \end{DoxyCompactList}\item 
static \+\_\+\+\_\+hwloc\+\_\+inline \hyperlink{group__hwlocality__objects_ga79b8ab56877ef99ac59b833203391c7d}{hwloc\+\_\+obj\+\_\+t} \hyperlink{group__hwlocality__advanced__io_ga73a5bc6265642e6001f7a10812ab886d}{hwloc\+\_\+get\+\_\+next\+\_\+osdev} (\hyperlink{group__hwlocality__topology_ga9d1e76ee15a7dee158b786c30b6a6e38}{hwloc\+\_\+topology\+\_\+t} topology, \hyperlink{group__hwlocality__objects_ga79b8ab56877ef99ac59b833203391c7d}{hwloc\+\_\+obj\+\_\+t} prev)
\begin{DoxyCompactList}\small\item\em Get the next O\+S device in the system. \end{DoxyCompactList}\item 
static \+\_\+\+\_\+hwloc\+\_\+inline \hyperlink{group__hwlocality__objects_ga79b8ab56877ef99ac59b833203391c7d}{hwloc\+\_\+obj\+\_\+t} \hyperlink{group__hwlocality__advanced__io_ga2bd3f856d0fc3c6c02642c17d763b823}{hwloc\+\_\+get\+\_\+next\+\_\+bridge} (\hyperlink{group__hwlocality__topology_ga9d1e76ee15a7dee158b786c30b6a6e38}{hwloc\+\_\+topology\+\_\+t} topology, \hyperlink{group__hwlocality__objects_ga79b8ab56877ef99ac59b833203391c7d}{hwloc\+\_\+obj\+\_\+t} prev)
\begin{DoxyCompactList}\small\item\em Get the next bridge in the system. \end{DoxyCompactList}\item 
\hypertarget{group__hwlocality__advanced__io_gaef22d6bf5cb0b7f13a863780126a8cb7}{static \+\_\+\+\_\+hwloc\+\_\+inline int {\bfseries hwloc\+\_\+bridge\+\_\+covers\+\_\+pcibus} (\hyperlink{group__hwlocality__objects_ga79b8ab56877ef99ac59b833203391c7d}{hwloc\+\_\+obj\+\_\+t} bridge, unsigned domain, unsigned bus)}\label{group__hwlocality__advanced__io_gaef22d6bf5cb0b7f13a863780126a8cb7}

\item 
static \+\_\+\+\_\+hwloc\+\_\+inline \hyperlink{group__hwlocality__objects_ga79b8ab56877ef99ac59b833203391c7d}{hwloc\+\_\+obj\+\_\+t} \hyperlink{group__hwlocality__advanced__io_ga81d4f68afbd68d94eb70d4f5c603eff5}{hwloc\+\_\+get\+\_\+hostbridge\+\_\+by\+\_\+pcibus} (\hyperlink{group__hwlocality__topology_ga9d1e76ee15a7dee158b786c30b6a6e38}{hwloc\+\_\+topology\+\_\+t} topology, unsigned domain, unsigned bus)
\begin{DoxyCompactList}\small\item\em Find the hostbridge that covers the given P\+C\+I bus. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}


\subsection{Function Documentation}
\hypertarget{group__hwlocality__advanced__io_ga81d4f68afbd68d94eb70d4f5c603eff5}{\index{Advanced I/\+O object traversal helpers@{Advanced I/\+O object traversal helpers}!hwloc\+\_\+get\+\_\+hostbridge\+\_\+by\+\_\+pcibus@{hwloc\+\_\+get\+\_\+hostbridge\+\_\+by\+\_\+pcibus}}
\index{hwloc\+\_\+get\+\_\+hostbridge\+\_\+by\+\_\+pcibus@{hwloc\+\_\+get\+\_\+hostbridge\+\_\+by\+\_\+pcibus}!Advanced I/\+O object traversal helpers@{Advanced I/\+O object traversal helpers}}
\subsubsection[{hwloc\+\_\+get\+\_\+hostbridge\+\_\+by\+\_\+pcibus}]{\setlength{\rightskip}{0pt plus 5cm}static \+\_\+\+\_\+hwloc\+\_\+inline {\bf hwloc\+\_\+obj\+\_\+t} hwloc\+\_\+get\+\_\+hostbridge\+\_\+by\+\_\+pcibus (
\begin{DoxyParamCaption}
\item[{{\bf hwloc\+\_\+topology\+\_\+t}}]{topology, }
\item[{unsigned}]{domain, }
\item[{unsigned}]{bus}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{group__hwlocality__advanced__io_ga81d4f68afbd68d94eb70d4f5c603eff5}


Find the hostbridge that covers the given P\+C\+I bus. 

This is useful for finding the locality of a bus because it is the hostbridge parent cpuset. 

References hwloc\+\_\+obj\+::attr, hwloc\+\_\+obj\+::cpuset, hwloc\+\_\+get\+\_\+next\+\_\+bridge(), H\+W\+L\+O\+C\+\_\+\+O\+B\+J\+\_\+\+B\+R\+I\+D\+G\+E, H\+W\+L\+O\+C\+\_\+\+O\+B\+J\+\_\+\+B\+R\+I\+D\+G\+E\+\_\+\+H\+O\+S\+T, hwloc\+\_\+obj\+::parent, and hwloc\+\_\+obj\+::type.

\hypertarget{group__hwlocality__advanced__io_ga2bd3f856d0fc3c6c02642c17d763b823}{\index{Advanced I/\+O object traversal helpers@{Advanced I/\+O object traversal helpers}!hwloc\+\_\+get\+\_\+next\+\_\+bridge@{hwloc\+\_\+get\+\_\+next\+\_\+bridge}}
\index{hwloc\+\_\+get\+\_\+next\+\_\+bridge@{hwloc\+\_\+get\+\_\+next\+\_\+bridge}!Advanced I/\+O object traversal helpers@{Advanced I/\+O object traversal helpers}}
\subsubsection[{hwloc\+\_\+get\+\_\+next\+\_\+bridge}]{\setlength{\rightskip}{0pt plus 5cm}static \+\_\+\+\_\+hwloc\+\_\+inline {\bf hwloc\+\_\+obj\+\_\+t} hwloc\+\_\+get\+\_\+next\+\_\+bridge (
\begin{DoxyParamCaption}
\item[{{\bf hwloc\+\_\+topology\+\_\+t}}]{topology, }
\item[{{\bf hwloc\+\_\+obj\+\_\+t}}]{prev}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{group__hwlocality__advanced__io_ga2bd3f856d0fc3c6c02642c17d763b823}


Get the next bridge in the system. 

\begin{DoxyReturn}{Returns}
the first bridge if {\ttfamily prev} is {\ttfamily N\+U\+L\+L}. 
\end{DoxyReturn}


References hwloc\+\_\+get\+\_\+next\+\_\+obj\+\_\+by\+\_\+type(), and H\+W\+L\+O\+C\+\_\+\+O\+B\+J\+\_\+\+B\+R\+I\+D\+G\+E.



Referenced by hwloc\+\_\+get\+\_\+hostbridge\+\_\+by\+\_\+pcibus().

\hypertarget{group__hwlocality__advanced__io_ga73a5bc6265642e6001f7a10812ab886d}{\index{Advanced I/\+O object traversal helpers@{Advanced I/\+O object traversal helpers}!hwloc\+\_\+get\+\_\+next\+\_\+osdev@{hwloc\+\_\+get\+\_\+next\+\_\+osdev}}
\index{hwloc\+\_\+get\+\_\+next\+\_\+osdev@{hwloc\+\_\+get\+\_\+next\+\_\+osdev}!Advanced I/\+O object traversal helpers@{Advanced I/\+O object traversal helpers}}
\subsubsection[{hwloc\+\_\+get\+\_\+next\+\_\+osdev}]{\setlength{\rightskip}{0pt plus 5cm}static \+\_\+\+\_\+hwloc\+\_\+inline {\bf hwloc\+\_\+obj\+\_\+t} hwloc\+\_\+get\+\_\+next\+\_\+osdev (
\begin{DoxyParamCaption}
\item[{{\bf hwloc\+\_\+topology\+\_\+t}}]{topology, }
\item[{{\bf hwloc\+\_\+obj\+\_\+t}}]{prev}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{group__hwlocality__advanced__io_ga73a5bc6265642e6001f7a10812ab886d}


Get the next O\+S device in the system. 

\begin{DoxyReturn}{Returns}
the first O\+S device if {\ttfamily prev} is {\ttfamily N\+U\+L\+L}. 
\end{DoxyReturn}


References hwloc\+\_\+get\+\_\+next\+\_\+obj\+\_\+by\+\_\+type(), and H\+W\+L\+O\+C\+\_\+\+O\+B\+J\+\_\+\+O\+S\+\_\+\+D\+E\+V\+I\+C\+E.

\hypertarget{group__hwlocality__advanced__io_gad6e1ed122ef3b6e098538d75acd5e3f6}{\index{Advanced I/\+O object traversal helpers@{Advanced I/\+O object traversal helpers}!hwloc\+\_\+get\+\_\+next\+\_\+pcidev@{hwloc\+\_\+get\+\_\+next\+\_\+pcidev}}
\index{hwloc\+\_\+get\+\_\+next\+\_\+pcidev@{hwloc\+\_\+get\+\_\+next\+\_\+pcidev}!Advanced I/\+O object traversal helpers@{Advanced I/\+O object traversal helpers}}
\subsubsection[{hwloc\+\_\+get\+\_\+next\+\_\+pcidev}]{\setlength{\rightskip}{0pt plus 5cm}static \+\_\+\+\_\+hwloc\+\_\+inline {\bf hwloc\+\_\+obj\+\_\+t} hwloc\+\_\+get\+\_\+next\+\_\+pcidev (
\begin{DoxyParamCaption}
\item[{{\bf hwloc\+\_\+topology\+\_\+t}}]{topology, }
\item[{{\bf hwloc\+\_\+obj\+\_\+t}}]{prev}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{group__hwlocality__advanced__io_gad6e1ed122ef3b6e098538d75acd5e3f6}


Get the next P\+C\+I device in the system. 

\begin{DoxyReturn}{Returns}
the first P\+C\+I device if {\ttfamily prev} is {\ttfamily N\+U\+L\+L}. 
\end{DoxyReturn}


References hwloc\+\_\+get\+\_\+next\+\_\+obj\+\_\+by\+\_\+type(), and H\+W\+L\+O\+C\+\_\+\+O\+B\+J\+\_\+\+P\+C\+I\+\_\+\+D\+E\+V\+I\+C\+E.



Referenced by hwloc\+\_\+get\+\_\+pcidev\+\_\+by\+\_\+busid().

\hypertarget{group__hwlocality__advanced__io_ga3603275746a8792e54415d79763aa9e9}{\index{Advanced I/\+O object traversal helpers@{Advanced I/\+O object traversal helpers}!hwloc\+\_\+get\+\_\+non\+\_\+io\+\_\+ancestor\+\_\+obj@{hwloc\+\_\+get\+\_\+non\+\_\+io\+\_\+ancestor\+\_\+obj}}
\index{hwloc\+\_\+get\+\_\+non\+\_\+io\+\_\+ancestor\+\_\+obj@{hwloc\+\_\+get\+\_\+non\+\_\+io\+\_\+ancestor\+\_\+obj}!Advanced I/\+O object traversal helpers@{Advanced I/\+O object traversal helpers}}
\subsubsection[{hwloc\+\_\+get\+\_\+non\+\_\+io\+\_\+ancestor\+\_\+obj}]{\setlength{\rightskip}{0pt plus 5cm}static \+\_\+\+\_\+hwloc\+\_\+inline {\bf hwloc\+\_\+obj\+\_\+t} hwloc\+\_\+get\+\_\+non\+\_\+io\+\_\+ancestor\+\_\+obj (
\begin{DoxyParamCaption}
\item[{{\bf hwloc\+\_\+topology\+\_\+t} topology}]{\+\_\+\+\_\+hwloc\+\_\+attribute\+\_\+unused, }
\item[{{\bf hwloc\+\_\+obj\+\_\+t}}]{ioobj}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{group__hwlocality__advanced__io_ga3603275746a8792e54415d79763aa9e9}


Get the first non-\/\+I/\+O ancestor object. 

Given the I/\+O object {\ttfamily ioobj}, find the smallest non-\/\+I/\+O ancestor object. This regular object may then be used for binding because its locality is the same as {\ttfamily ioobj}. 

References hwloc\+\_\+obj\+::cpuset, and hwloc\+\_\+obj\+::parent.

