\hypertarget{paffinity_8h}{\section{opal/mca/paffinity/paffinity.h File Reference}
\label{paffinity_8h}\index{opal/mca/paffinity/paffinity.\+h@{opal/mca/paffinity/paffinity.\+h}}
}


paffinity (processor affinity) framework component interface definitions.  


{\ttfamily \#include \char`\"{}opal\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/mca.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}opal/mca/base/base.\+h\char`\"{}}\\*
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structopal__paffinity__base__cpu__set__t}{opal\+\_\+paffinity\+\_\+base\+\_\+cpu\+\_\+set\+\_\+t}
\begin{DoxyCompactList}\small\item\em Public processor bitmask type. \end{DoxyCompactList}\item 
struct \hyperlink{structopal__paffinity__base__component__2__0__1__t}{opal\+\_\+paffinity\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+1\+\_\+t}
\begin{DoxyCompactList}\small\item\em Structure for paffinity components. \end{DoxyCompactList}\item 
struct \hyperlink{structopal__paffinity__base__module__1__1__0__t}{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+1\+\_\+1\+\_\+0\+\_\+t}
\begin{DoxyCompactList}\small\item\em Structure for paffinity modules. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\hypertarget{paffinity_8h_a63191477ec91df8367662ce218069f79}{\#define \hyperlink{paffinity_8h_a63191477ec91df8367662ce218069f79}{O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+L\+O\+C\+A\+L\+I\+T\+Y\+\_\+\+U\+N\+K\+N\+O\+W\+N}~0x0000}\label{paffinity_8h_a63191477ec91df8367662ce218069f79}

\begin{DoxyCompactList}\small\item\em \hyperlink{structProcess}{Process} locality definitions. \end{DoxyCompactList}\item 
\hypertarget{paffinity_8h_a6770fe55a5e7922ca7d991a4345fac78}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+N\+O\+N\+\_\+\+L\+O\+C\+A\+L}~0x8000}\label{paffinity_8h_a6770fe55a5e7922ca7d991a4345fac78}

\item 
\hypertarget{paffinity_8h_a925b160ad58525af485abc19fad4f59b}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+C\+L\+U\+S\+T\+E\+R}~0x0400}\label{paffinity_8h_a925b160ad58525af485abc19fad4f59b}

\item 
\hypertarget{paffinity_8h_a1914c8de065f8f596a6898943679c809}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+C\+U}~0x0200}\label{paffinity_8h_a1914c8de065f8f596a6898943679c809}

\item 
\hypertarget{paffinity_8h_a8341c60fd7ec0835cb673f30cc09ee85}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+N\+O\+D\+E}~0x0100}\label{paffinity_8h_a8341c60fd7ec0835cb673f30cc09ee85}

\item 
\hypertarget{paffinity_8h_a482fa0cb2b01701f98de4192f0bd223c}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+B\+O\+A\+R\+D}~0x0080}\label{paffinity_8h_a482fa0cb2b01701f98de4192f0bd223c}

\item 
\hypertarget{paffinity_8h_a4c0e3dfd443a4c6b11f55f736927e59c}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+N\+U\+M\+A}~0x0040}\label{paffinity_8h_a4c0e3dfd443a4c6b11f55f736927e59c}

\item 
\hypertarget{paffinity_8h_ad98cb61f62196156fe498f21c90062f1}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+S\+O\+C\+K\+E\+T}~0x0020}\label{paffinity_8h_ad98cb61f62196156fe498f21c90062f1}

\item 
\hypertarget{paffinity_8h_a048cfdcd80a03f796062846d456b1fb1}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+L3\+C\+A\+C\+H\+E}~0x0010}\label{paffinity_8h_a048cfdcd80a03f796062846d456b1fb1}

\item 
\hypertarget{paffinity_8h_a29fbe821a3c3135f1f55d6bd8518c4ec}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+L2\+C\+A\+C\+H\+E}~0x0008}\label{paffinity_8h_a29fbe821a3c3135f1f55d6bd8518c4ec}

\item 
\hypertarget{paffinity_8h_a181187c67759f54de83204aa16903ad6}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+L1\+C\+A\+C\+H\+E}~0x0004}\label{paffinity_8h_a181187c67759f54de83204aa16903ad6}

\item 
\hypertarget{paffinity_8h_a2b1db4e03129bf321db80fb63d066c42}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+C\+O\+R\+E}~0x0002}\label{paffinity_8h_a2b1db4e03129bf321db80fb63d066c42}

\item 
\hypertarget{paffinity_8h_ae67a354603208b3df5598779df3ced67}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+H\+W\+T\+H\+R\+E\+A\+D}~0x0001}\label{paffinity_8h_ae67a354603208b3df5598779df3ced67}

\item 
\hypertarget{paffinity_8h_af8c7209f87a6d26eb306f88d3bb371fe}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+A\+L\+L\+\_\+\+L\+O\+C\+A\+L}~0x0fff}\label{paffinity_8h_af8c7209f87a6d26eb306f88d3bb371fe}

\item 
\hypertarget{paffinity_8h_ad17e98458fecef5cc1d1cbd7e15f5559}{\#define \hyperlink{paffinity_8h_ad17e98458fecef5cc1d1cbd7e15f5559}{O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+L\+O\+C\+A\+L\+\_\+\+H\+W\+T\+H\+R\+E\+A\+D}(n)~((n) \& O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+H\+W\+T\+H\+R\+E\+A\+D)}\label{paffinity_8h_ad17e98458fecef5cc1d1cbd7e15f5559}

\begin{DoxyCompactList}\small\item\em \hyperlink{structProcess}{Process} locality macros. \end{DoxyCompactList}\item 
\hypertarget{paffinity_8h_a7b7525e2576c84fe89e8ffe18c0b964f}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+L\+O\+C\+A\+L\+\_\+\+C\+O\+R\+E}(n)~((n) \& O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+C\+O\+R\+E)}\label{paffinity_8h_a7b7525e2576c84fe89e8ffe18c0b964f}

\item 
\hypertarget{paffinity_8h_a8a9d0c3e5291ef885c843e01158405e0}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+L\+O\+C\+A\+L\+\_\+\+L1\+C\+A\+C\+H\+E}(n)~((n) \& O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+L1\+C\+A\+C\+H\+E)}\label{paffinity_8h_a8a9d0c3e5291ef885c843e01158405e0}

\item 
\hypertarget{paffinity_8h_add1457ed6a1d6cf1ae551f1e98450d74}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+L\+O\+C\+A\+L\+\_\+\+L2\+C\+A\+C\+H\+E}(n)~((n) \& O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+L2\+C\+A\+C\+H\+E)}\label{paffinity_8h_add1457ed6a1d6cf1ae551f1e98450d74}

\item 
\hypertarget{paffinity_8h_abca1e7d386c82c3dc87d0f588c8683df}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+L\+O\+C\+A\+L\+\_\+\+L3\+C\+A\+C\+H\+E}(n)~((n) \& O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+L3\+C\+A\+C\+H\+E)}\label{paffinity_8h_abca1e7d386c82c3dc87d0f588c8683df}

\item 
\hypertarget{paffinity_8h_a21248fe34ac3a6dcccf5711e74786a49}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+L\+O\+C\+A\+L\+\_\+\+S\+O\+C\+K\+E\+T}(n)~((n) \& O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+S\+O\+C\+K\+E\+T)}\label{paffinity_8h_a21248fe34ac3a6dcccf5711e74786a49}

\item 
\hypertarget{paffinity_8h_ae8757fa91c1717f811f9878cecdbe2ad}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+L\+O\+C\+A\+L\+\_\+\+N\+U\+M\+A}(n)~((n) \& O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+N\+U\+M\+A)}\label{paffinity_8h_ae8757fa91c1717f811f9878cecdbe2ad}

\item 
\hypertarget{paffinity_8h_a9083f7295ae816a6d6836df7f1345e28}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+L\+O\+C\+A\+L\+\_\+\+B\+O\+A\+R\+D}(n)~((n) \& O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+B\+O\+A\+R\+D)}\label{paffinity_8h_a9083f7295ae816a6d6836df7f1345e28}

\item 
\hypertarget{paffinity_8h_a44209a64008c180ee145266f2fefb432}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+L\+O\+C\+A\+L\+\_\+\+N\+O\+D\+E}(n)~((n) \& O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+N\+O\+D\+E)}\label{paffinity_8h_a44209a64008c180ee145266f2fefb432}

\item 
\hypertarget{paffinity_8h_a69d24921f752cf8be8422eaaf2e02cfb}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+L\+O\+C\+A\+L\+\_\+\+C\+U}(n)~((n) \& O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+C\+U)}\label{paffinity_8h_a69d24921f752cf8be8422eaaf2e02cfb}

\item 
\hypertarget{paffinity_8h_a916f5ebdc57bcd56d669791af891cb3c}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+L\+O\+C\+A\+L\+\_\+\+C\+L\+U\+S\+T\+E\+R}(n)~((n) \& O\+P\+A\+L\+\_\+\+P\+R\+O\+C\+\_\+\+O\+N\+\_\+\+C\+L\+U\+S\+T\+E\+R)}\label{paffinity_8h_a916f5ebdc57bcd56d669791af891cb3c}

\item 
\hypertarget{paffinity_8h_a9e5444b7458f3875a469b8b13a0d0861}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+D\+O\+\_\+\+N\+O\+T\+\_\+\+B\+I\+N\+D}~0x01}\label{paffinity_8h_a9e5444b7458f3875a469b8b13a0d0861}

\item 
\hypertarget{paffinity_8h_a4b3e86df95ff77816ebb32bce57bd146}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+I\+N\+D\+\_\+\+T\+O\+\_\+\+C\+O\+R\+E}~0x02}\label{paffinity_8h_a4b3e86df95ff77816ebb32bce57bd146}

\item 
\hypertarget{paffinity_8h_a39addaa84dcf555b3cb06caeb01ab187}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+I\+N\+D\+\_\+\+T\+O\+\_\+\+S\+O\+C\+K\+E\+T}~0x04}\label{paffinity_8h_a39addaa84dcf555b3cb06caeb01ab187}

\item 
\hypertarget{paffinity_8h_a9db9900281f3116381f50b2c335497dc}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+I\+N\+D\+\_\+\+T\+O\+\_\+\+B\+O\+A\+R\+D}~0x08}\label{paffinity_8h_a9db9900281f3116381f50b2c335497dc}

\item 
\hypertarget{paffinity_8h_a9046cd468dad78d0fa07b9078b332740}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+I\+N\+D\+\_\+\+I\+F\+\_\+\+S\+U\+P\+P\+O\+R\+T\+E\+D}~0x80}\label{paffinity_8h_a9046cd468dad78d0fa07b9078b332740}

\item 
\hypertarget{paffinity_8h_a0dacb9967714c8c0a4c95fe9f606e6d1}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+I\+T\+M\+A\+S\+K\+\_\+\+T\+\_\+\+N\+U\+M\+\_\+\+B\+I\+T\+S}~(sizeof(\hyperlink{paffinity_8h_a08be538dd5dfec76f7ee3df5de637394}{opal\+\_\+paffinity\+\_\+base\+\_\+bitmask\+\_\+t}) $\ast$ 8)}\label{paffinity_8h_a0dacb9967714c8c0a4c95fe9f606e6d1}

\item 
\hypertarget{paffinity_8h_ab550e8d77fb32d0d8c949105bfeb32ef}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+I\+T\+M\+A\+S\+K\+\_\+\+C\+P\+U\+\_\+\+M\+A\+X}~1024}\label{paffinity_8h_ab550e8d77fb32d0d8c949105bfeb32ef}

\item 
\hypertarget{paffinity_8h_ae1c7a3af5f745ab29c3b6e0b33e0437c}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+I\+T\+M\+A\+S\+K\+\_\+\+N\+U\+M\+\_\+\+E\+L\+E\+M\+E\+N\+T\+S}~(O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+I\+T\+M\+A\+S\+K\+\_\+\+C\+P\+U\+\_\+\+M\+A\+X / O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+I\+T\+M\+A\+S\+K\+\_\+\+T\+\_\+\+N\+U\+M\+\_\+\+B\+I\+T\+S)}\label{paffinity_8h_ae1c7a3af5f745ab29c3b6e0b33e0437c}

\item 
\hypertarget{paffinity_8h_a6d7aac1aceb8a0d12ffe47dac39fde9b}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+C\+P\+U\+\_\+\+S\+E\+T\+\_\+\+N\+U\+M\+\_\+\+B\+Y\+T\+E\+S}~(O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+I\+T\+M\+A\+S\+K\+\_\+\+N\+U\+M\+\_\+\+E\+L\+E\+M\+E\+N\+T\+S $\ast$ sizeof(\hyperlink{paffinity_8h_a08be538dd5dfec76f7ee3df5de637394}{opal\+\_\+paffinity\+\_\+base\+\_\+bitmask\+\_\+t}))}\label{paffinity_8h_a6d7aac1aceb8a0d12ffe47dac39fde9b}

\item 
\hypertarget{paffinity_8h_ae48031cc9147d5aaf45bc248a2acaf4a}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+C\+P\+U\+\_\+\+B\+Y\+T\+E}(num)~((num) / O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+I\+T\+M\+A\+S\+K\+\_\+\+T\+\_\+\+N\+U\+M\+\_\+\+B\+I\+T\+S)}\label{paffinity_8h_ae48031cc9147d5aaf45bc248a2acaf4a}

\item 
\hypertarget{paffinity_8h_a52e8185bf6a96c133c86da79c28584e8}{\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+C\+P\+U\+\_\+\+B\+I\+T}(num)~((num) \% O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+I\+T\+M\+A\+S\+K\+\_\+\+T\+\_\+\+N\+U\+M\+\_\+\+B\+I\+T\+S)}\label{paffinity_8h_a52e8185bf6a96c133c86da79c28584e8}

\item 
\hypertarget{paffinity_8h_a96bfbd5099f9833b415b7df025f0da17}{\#define \hyperlink{paffinity_8h_a96bfbd5099f9833b415b7df025f0da17}{O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+C\+P\+U\+\_\+\+Z\+E\+R\+O}(cpuset)~memset(\&(cpuset), 0, sizeof(\hyperlink{structopal__paffinity__base__cpu__set__t}{opal\+\_\+paffinity\+\_\+base\+\_\+cpu\+\_\+set\+\_\+t}))}\label{paffinity_8h_a96bfbd5099f9833b415b7df025f0da17}

\begin{DoxyCompactList}\small\item\em Public macro to zero out a O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y cpu set. \end{DoxyCompactList}\item 
\hypertarget{paffinity_8h_a9e11416ff208ed0461be286e13c41727}{\#define \hyperlink{paffinity_8h_a9e11416ff208ed0461be286e13c41727}{O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+C\+P\+U\+\_\+\+S\+E\+T}(num, cpuset)~(cpuset).bitmask\mbox{[}O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+C\+P\+U\+\_\+\+B\+Y\+T\+E(num)\mbox{]} $\vert$= ((\hyperlink{paffinity_8h_a08be538dd5dfec76f7ee3df5de637394}{opal\+\_\+paffinity\+\_\+base\+\_\+bitmask\+\_\+t}) 1 $<$$<$ O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+C\+P\+U\+\_\+\+B\+I\+T(num))}\label{paffinity_8h_a9e11416ff208ed0461be286e13c41727}

\begin{DoxyCompactList}\small\item\em Public macro to set a bit in a O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y cpu set. \end{DoxyCompactList}\item 
\hypertarget{paffinity_8h_aa959242db4c32669bdcd421ed18d1d65}{\#define \hyperlink{paffinity_8h_aa959242db4c32669bdcd421ed18d1d65}{O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+C\+P\+U\+\_\+\+C\+L\+R}(num, cpuset)~(cpuset).bitmask\mbox{[}O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+C\+P\+U\+\_\+\+B\+Y\+T\+E(num)\mbox{]} \&= $\sim$((\hyperlink{paffinity_8h_a08be538dd5dfec76f7ee3df5de637394}{opal\+\_\+paffinity\+\_\+base\+\_\+bitmask\+\_\+t}) 1 $<$$<$ O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+C\+P\+U\+\_\+\+B\+I\+T(num))}\label{paffinity_8h_aa959242db4c32669bdcd421ed18d1d65}

\begin{DoxyCompactList}\small\item\em Public macro to clear a bit in a O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y cpu set. \end{DoxyCompactList}\item 
\hypertarget{paffinity_8h_a8ec5f414729f903dfa96a53f6bc5b0a2}{\#define \hyperlink{paffinity_8h_a8ec5f414729f903dfa96a53f6bc5b0a2}{O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+C\+P\+U\+\_\+\+I\+S\+S\+E\+T}(num, cpuset)~(0 != (((cpuset).bitmask\mbox{[}O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+C\+P\+U\+\_\+\+B\+Y\+T\+E(num)\mbox{]}) \& ((\hyperlink{paffinity_8h_a08be538dd5dfec76f7ee3df5de637394}{opal\+\_\+paffinity\+\_\+base\+\_\+bitmask\+\_\+t}) 1 $<$$<$ O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+C\+P\+U\+\_\+\+B\+I\+T(num))))}\label{paffinity_8h_a8ec5f414729f903dfa96a53f6bc5b0a2}

\begin{DoxyCompactList}\small\item\em Public macro to test if a bit is set in a O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y cpu set. \end{DoxyCompactList}\item 
\#define \hyperlink{paffinity_8h_a49512b9e6029f14c2dbb8a9e964cef9c}{O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+P\+R\+O\+C\+E\+S\+S\+\_\+\+I\+S\+\_\+\+B\+O\+U\+N\+D}(cpuset, bound)
\begin{DoxyCompactList}\small\item\em Public macro to test if a process is bound anywhere. \end{DoxyCompactList}\item 
\#define {\bfseries O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+1}
\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{paffinity_8h_ab53378396a93e9b815a79f9be775832e}{typedef uint16\+\_\+t {\bfseries opal\+\_\+paffinity\+\_\+locality\+\_\+t}}\label{paffinity_8h_ab53378396a93e9b815a79f9be775832e}

\item 
typedef unsigned long int \hyperlink{paffinity_8h_a08be538dd5dfec76f7ee3df5de637394}{opal\+\_\+paffinity\+\_\+base\+\_\+bitmask\+\_\+t}
\begin{DoxyCompactList}\small\item\em Buffer type for paffinity processor masks. \end{DoxyCompactList}\item 
\hypertarget{paffinity_8h_a33bdff892bb63295ab92a988427b6e14}{typedef struct \\*
\hyperlink{structopal__paffinity__base__cpu__set__t}{opal\+\_\+paffinity\+\_\+base\+\_\+cpu\+\_\+set\+\_\+t} \hyperlink{paffinity_8h_a33bdff892bb63295ab92a988427b6e14}{opal\+\_\+paffinity\+\_\+base\+\_\+cpu\+\_\+set\+\_\+t}}\label{paffinity_8h_a33bdff892bb63295ab92a988427b6e14}

\begin{DoxyCompactList}\small\item\em Public processor bitmask type. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{paffinity_8h_a7d6d3f5bff1eb87f8b4ce91dd461f6ee}{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+init\+\_\+1\+\_\+1\+\_\+0\+\_\+fn\+\_\+t} )(void)
\begin{DoxyCompactList}\small\item\em Module initialization function. \end{DoxyCompactList}\item 
\hypertarget{paffinity_8h_adddc830e74d8f685e5c41e5450978091}{typedef int($\ast$ \hyperlink{paffinity_8h_adddc830e74d8f685e5c41e5450978091}{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+set\+\_\+fn\+\_\+t} )(\hyperlink{structopal__paffinity__base__cpu__set__t}{opal\+\_\+paffinity\+\_\+base\+\_\+cpu\+\_\+set\+\_\+t} cpumask)}\label{paffinity_8h_adddc830e74d8f685e5c41e5450978091}

\begin{DoxyCompactList}\small\item\em Module function to set this process' affinity to a specific set of P\+H\+Y\+S\+I\+C\+A\+L C\+P\+Us. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{paffinity_8h_a2e8c5aa09793819799de7c73e2dd4dcc}{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+fn\+\_\+t} )(\hyperlink{structopal__paffinity__base__cpu__set__t}{opal\+\_\+paffinity\+\_\+base\+\_\+cpu\+\_\+set\+\_\+t} $\ast$cpumask)
\begin{DoxyCompactList}\small\item\em Module function to get this process' affinity to a specific set of P\+H\+Y\+S\+I\+C\+A\+L C\+P\+Us. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{paffinity_8h_a019263df0e9bd9017f7c8f344d52280e}{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+map\+\_\+to\+\_\+processor\+\_\+id\+\_\+fn\+\_\+t} )(int physical\+\_\+socket, int physical\+\_\+core, int $\ast$physical\+\_\+processor\+\_\+id)
\begin{DoxyCompactList}\small\item\em Returns mapping of P\+H\+Y\+S\+I\+C\+A\+L socket\+:core -\/$>$ P\+H\+Y\+S\+I\+C\+A\+L processor id. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{paffinity_8h_a3a166fefaf19da5e68171978703f4702}{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+map\+\_\+to\+\_\+socket\+\_\+core\+\_\+fn\+\_\+t} )(int physical\+\_\+processor\+\_\+id, int $\ast$physical\+\_\+socket, int $\ast$physical\+\_\+core)
\begin{DoxyCompactList}\small\item\em Provides mapping of P\+H\+Y\+S\+I\+C\+A\+L processor id -\/$>$ P\+H\+Y\+S\+I\+C\+A\+L socket\+:core. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{paffinity_8h_a6b8c24a204a082264957bd08f3cf6b3e}{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+processor\+\_\+info\+\_\+fn\+\_\+t} )(int $\ast$num\+\_\+processors)
\begin{DoxyCompactList}\small\item\em Provides number of L\+O\+G\+I\+C\+A\+L processors in a host. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{paffinity_8h_a96814335de54036a5bb213107432e260}{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+socket\+\_\+info\+\_\+fn\+\_\+t} )(int $\ast$num\+\_\+sockets)
\begin{DoxyCompactList}\small\item\em Provides the number of L\+O\+G\+I\+C\+A\+L sockets in a host. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{paffinity_8h_adc65a9d4080a2e8c348924a7e120d816}{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+core\+\_\+info\+\_\+fn\+\_\+t} )(int physical\+\_\+socket, int $\ast$num\+\_\+cores)
\begin{DoxyCompactList}\small\item\em Provides the number of L\+O\+G\+I\+C\+A\+L cores in a P\+H\+Y\+S\+I\+C\+A\+L socket. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{paffinity_8h_a30c2c343fd025712822deb2308e1f965}{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+processor\+\_\+id\+\_\+fn\+\_\+t} )(int logical\+\_\+processor\+\_\+id, int $\ast$physical\+\_\+processor\+\_\+id)
\begin{DoxyCompactList}\small\item\em Provide the P\+H\+Y\+S\+I\+C\+A\+L processor I\+D that corresponds to the given L\+O\+G\+I\+C\+A\+L processor I\+D. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{paffinity_8h_a16ac34318a1ce32bdd8a16421ebeb1d2}{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+socket\+\_\+id\+\_\+fn\+\_\+t} )(int logical\+\_\+socket\+\_\+id, int $\ast$physical\+\_\+socket\+\_\+id)
\begin{DoxyCompactList}\small\item\em Provide the P\+H\+Y\+S\+I\+C\+A\+L socket I\+D that corresponds to the given L\+O\+G\+I\+C\+A\+L socket I\+D. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{paffinity_8h_a92ca5445ec79f61e7fdacab3fd422783}{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+core\+\_\+id\+\_\+fn\+\_\+t} )(int physical\+\_\+socket\+\_\+id, int logical\+\_\+core\+\_\+id, int $\ast$physical\+\_\+core\+\_\+id)
\begin{DoxyCompactList}\small\item\em Provide the P\+H\+Y\+S\+I\+C\+A\+L core I\+D that corresponds to the given L\+O\+G\+I\+C\+A\+L core I\+D on the given P\+H\+Y\+S\+I\+C\+A\+L socket I\+D. \end{DoxyCompactList}\item 
typedef int($\ast$ \hyperlink{paffinity_8h_a154cd81d61cdb78b377e2aacf554dea9}{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t} )(void)
\begin{DoxyCompactList}\small\item\em Module finalize function. \end{DoxyCompactList}\item 
\hypertarget{paffinity_8h_abb27609ab7a6d7dcf5eb7b46a5e31527}{typedef struct \\*
\hyperlink{structopal__paffinity__base__component__2__0__1__t}{opal\+\_\+paffinity\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+1\+\_\+t} \hyperlink{paffinity_8h_abb27609ab7a6d7dcf5eb7b46a5e31527}{opal\+\_\+paffinity\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+1\+\_\+t}}\label{paffinity_8h_abb27609ab7a6d7dcf5eb7b46a5e31527}

\begin{DoxyCompactList}\small\item\em Convenience typedef. \end{DoxyCompactList}\item 
\hypertarget{paffinity_8h_aa39a7b5040f354f24092047673f73a38}{typedef struct \\*
\hyperlink{structopal__paffinity__base__component__2__0__1__t}{opal\+\_\+paffinity\+\_\+base\+\_\+component\+\_\+2\+\_\+0\+\_\+1\+\_\+t} {\bfseries opal\+\_\+paffinity\+\_\+base\+\_\+component\+\_\+t}}\label{paffinity_8h_aa39a7b5040f354f24092047673f73a38}

\item 
\hypertarget{paffinity_8h_a23649da6f5f1a44253770fc156a84ed5}{typedef struct \\*
\hyperlink{structopal__paffinity__base__module__1__1__0__t}{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+1\+\_\+1\+\_\+0\+\_\+t} \hyperlink{paffinity_8h_a23649da6f5f1a44253770fc156a84ed5}{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+1\+\_\+1\+\_\+0\+\_\+t}}\label{paffinity_8h_a23649da6f5f1a44253770fc156a84ed5}

\begin{DoxyCompactList}\small\item\em Convenience typedef. \end{DoxyCompactList}\item 
\hypertarget{paffinity_8h_a7892ec1586ee3ddcb18422f54b276cf4}{typedef struct \\*
\hyperlink{structopal__paffinity__base__module__1__1__0__t}{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+1\+\_\+1\+\_\+0\+\_\+t} {\bfseries opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+t}}\label{paffinity_8h_a7892ec1586ee3ddcb18422f54b276cf4}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
paffinity (processor affinity) framework component interface definitions. 

Intent

This framework is used to support the O\+S-\/specific A\+P\+I for placement of processes on processors. It does {\itshape not} decide scheduling issues -- it is simply for assigning the current process it to a specific processor set. As such, the components are likely to be extremely short/simple -- there will likely be one component for each O\+S/\+A\+P\+I that we support (e.\+g., Linux, I\+R\+I\+X, etc.). As a direct consequence, there will likely only be one component that is useable on a given platform (making selection easy).

It is {\itshape not} an error if there is no paffinity component available; processor affinity services are simply not available. Hence, paffinity component functions are invoked through short wrapper functions in paffinity/base (that check to see if there is a selected component before invoking function pointers). If there is no selected component, they return an appropriate error code.

In the paffinity interface, we make the distinction between L\+O\+G\+I\+C\+A\+L and P\+H\+Y\+S\+I\+C\+A\+L processors. L\+O\+G\+I\+C\+A\+L processors are defined to have some corresponding P\+H\+Y\+S\+I\+C\+A\+L processor that both exists and is currently online. L\+O\+G\+I\+C\+A\+L processors numbered countiguously starting with 0. P\+H\+Y\+S\+I\+C\+A\+L processors are numbered according to the underlying operating system; they are represented by integers, but no guarantees are made about their values.

Hence, L\+O\+G\+I\+C\+A\+L processor I\+Ds are convenient for humans and are in the range of \mbox{[}0,N-\/1\mbox{]} (assuming N processors are currently online). Each L\+O\+G\+I\+C\+A\+L processor has a 1\+:1 relationship with a P\+H\+Y\+S\+I\+C\+A\+L processor, but the P\+H\+Y\+S\+I\+C\+A\+L processor's I\+D can be any unique integer value.

$\ast$$\ast$$\ast$\+N\+O\+T\+E$\ast$$\ast$$\ast$ Obtaining information about socket/core I\+Ds is not well supported in many O\+S's. Programmers using this paffinity interface should fully expect to sometimes get O\+P\+A\+L\+\_\+\+E\+R\+R\+\_\+\+N\+O\+T\+\_\+\+S\+U\+P\+P\+O\+R\+T\+E\+D back when calling such functions.

General scheme

The component has one function\+: query(). It simply returns a priority (for the unlikely event where there are multiple components available on a given platform).

Note that the only real paffinity module that matters these days is hwloc. Its module functions will return O\+P\+A\+L\+\_\+\+E\+R\+R\+\_\+\+N\+O\+T\+\_\+\+I\+N\+I\+T\+I\+A\+L\+I\+Z\+E\+D if the underlying hwloc system has not yet been initialized (which may not have occured yet since we tend to only initialize hwloc if/when necessary -- it's not nice to have N processes on a server all initialize hwloc simultaneously, because they might all simultaneously bang on /proc and /syst, etc.).

The module has the following functions\+:


\begin{DoxyItemize}
\item module\+\_\+init\+: initialze the module
\item set\+: set this process's affinity to a specific processor set
\item get\+: get this process's processor affinity set
\item map physical (socket I\+D, core I\+D) -\/$>$ physical processor I\+D
\item map physical processor I\+D -\/$>$ physical (socket I\+D, core I\+D)
\item get the number of logical processors
\item get the number of logical sockets
\item get the number of logical cores on a specific socket
\item map logical processor I\+D -\/$>$ physical processor I\+D
\item map logical socket I\+D -\/$>$ physical socket I\+D
\item map physical socket I\+D, logical core I\+D -\/$>$ physical core I\+D
\item module\+\_\+finalize\+: finalize the module 
\end{DoxyItemize}

\subsection{Macro Definition Documentation}
\hypertarget{paffinity_8h_a6cd6673a0bb81e6d6b4f950c3450ac0d}{\index{paffinity.\+h@{paffinity.\+h}!O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+1@{O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+1}}
\index{O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+1@{O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+1}!paffinity.\+h@{paffinity.\+h}}
\subsubsection[{O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+1}]{\setlength{\rightskip}{0pt plus 5cm}\#define O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+B\+A\+S\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+2\+\_\+0\+\_\+1}}\label{paffinity_8h_a6cd6673a0bb81e6d6b4f950c3450ac0d}
{\bfseries Value\+:}
\begin{DoxyCode}
MCA\_BASE\_VERSION\_2\_0\_0, \(\backslash\)
    \textcolor{stringliteral}{"paffinity"}, 2, 0, 1
\end{DoxyCode}
\hypertarget{paffinity_8h_a49512b9e6029f14c2dbb8a9e964cef9c}{\index{paffinity.\+h@{paffinity.\+h}!O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+P\+R\+O\+C\+E\+S\+S\+\_\+\+I\+S\+\_\+\+B\+O\+U\+N\+D@{O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+P\+R\+O\+C\+E\+S\+S\+\_\+\+I\+S\+\_\+\+B\+O\+U\+N\+D}}
\index{O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+P\+R\+O\+C\+E\+S\+S\+\_\+\+I\+S\+\_\+\+B\+O\+U\+N\+D@{O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+P\+R\+O\+C\+E\+S\+S\+\_\+\+I\+S\+\_\+\+B\+O\+U\+N\+D}!paffinity.\+h@{paffinity.\+h}}
\subsubsection[{O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+P\+R\+O\+C\+E\+S\+S\+\_\+\+I\+S\+\_\+\+B\+O\+U\+N\+D}]{\setlength{\rightskip}{0pt plus 5cm}\#define O\+P\+A\+L\+\_\+\+P\+A\+F\+F\+I\+N\+I\+T\+Y\+\_\+\+P\+R\+O\+C\+E\+S\+S\+\_\+\+I\+S\+\_\+\+B\+O\+U\+N\+D(
\begin{DoxyParamCaption}
\item[{}]{cpuset, }
\item[{}]{bound}
\end{DoxyParamCaption}
)}}\label{paffinity_8h_a49512b9e6029f14c2dbb8a9e964cef9c}
{\bfseries Value\+:}
\begin{DoxyCode}
\textcolor{keywordflow}{do} \{                                                                \(\backslash\)
        int i, num\_processors, num\_bound;                               \(\backslash\)
        *(bound) = \textcolor{keyword}{false};                                               \(\backslash\)
        if (OPAL\_SUCCESS ==                                             \(\backslash\)
            opal\_paffinity\_base\_get\_processor\_info(&num\_processors)) \{  \(\backslash\)
            num\_bound = 0;                                              \(\backslash\)
            for (i = 0; i < OPAL\_PAFFINITY\_BITMASK\_CPU\_MAX; i++) \{      \(\backslash\)
                if (\hyperlink{paffinity_8h_a8ec5f414729f903dfa96a53f6bc5b0a2}{OPAL\_PAFFINITY\_CPU\_ISSET}(i, (cpuset))) \{            \(\backslash\)
                    num\_bound++;                                        \(\backslash\)
                \}                                                       \(\backslash\)
            \}                                                           \(\backslash\)
            if (0 < num\_bound && (1 == num\_processors ||                \(\backslash\)
                                  num\_bound < num\_processors)) \{        \(\backslash\)
                *(bound) = \textcolor{keyword}{true};                                        \(\backslash\)
            \}                                                           \(\backslash\)
        \}                                                               \(\backslash\)
    \} \textcolor{keywordflow}{while}(0);
\end{DoxyCode}


Public macro to test if a process is bound anywhere. 



\subsection{Typedef Documentation}
\hypertarget{paffinity_8h_a08be538dd5dfec76f7ee3df5de637394}{\index{paffinity.\+h@{paffinity.\+h}!opal\+\_\+paffinity\+\_\+base\+\_\+bitmask\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+bitmask\+\_\+t}}
\index{opal\+\_\+paffinity\+\_\+base\+\_\+bitmask\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+bitmask\+\_\+t}!paffinity.\+h@{paffinity.\+h}}
\subsubsection[{opal\+\_\+paffinity\+\_\+base\+\_\+bitmask\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef unsigned long int {\bf opal\+\_\+paffinity\+\_\+base\+\_\+bitmask\+\_\+t}}}\label{paffinity_8h_a08be538dd5dfec76f7ee3df5de637394}


Buffer type for paffinity processor masks. 

Copied almost directly from P\+L\+P\+A. \hypertarget{paffinity_8h_a154cd81d61cdb78b377e2aacf554dea9}{\index{paffinity.\+h@{paffinity.\+h}!opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t}}
\index{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t}!paffinity.\+h@{paffinity.\+h}}
\subsubsection[{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+finalize\+\_\+fn\+\_\+t)(void)}}\label{paffinity_8h_a154cd81d61cdb78b377e2aacf554dea9}


Module finalize function. 

Invoked by the base on the selected module when the paffinity framework is being shut down. \hypertarget{paffinity_8h_adc65a9d4080a2e8c348924a7e120d816}{\index{paffinity.\+h@{paffinity.\+h}!opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+core\+\_\+info\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+core\+\_\+info\+\_\+fn\+\_\+t}}
\index{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+core\+\_\+info\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+core\+\_\+info\+\_\+fn\+\_\+t}!paffinity.\+h@{paffinity.\+h}}
\subsubsection[{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+core\+\_\+info\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+core\+\_\+info\+\_\+fn\+\_\+t)(int physical\+\_\+socket, int $\ast$num\+\_\+cores)}}\label{paffinity_8h_adc65a9d4080a2e8c348924a7e120d816}


Provides the number of L\+O\+G\+I\+C\+A\+L cores in a P\+H\+Y\+S\+I\+C\+A\+L socket. 

Returns O\+P\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S or O\+P\+A\+L\+\_\+\+E\+R\+R\+\_\+\+N\+O\+T\+\_\+\+S\+U\+P\+P\+O\+R\+T\+E\+D if not supported. \hypertarget{paffinity_8h_a2e8c5aa09793819799de7c73e2dd4dcc}{\index{paffinity.\+h@{paffinity.\+h}!opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+fn\+\_\+t}}
\index{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+fn\+\_\+t}!paffinity.\+h@{paffinity.\+h}}
\subsubsection[{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+fn\+\_\+t)({\bf opal\+\_\+paffinity\+\_\+base\+\_\+cpu\+\_\+set\+\_\+t} $\ast$cpumask)}}\label{paffinity_8h_a2e8c5aa09793819799de7c73e2dd4dcc}


Module function to get this process' affinity to a specific set of P\+H\+Y\+S\+I\+C\+A\+L C\+P\+Us. 

Returns any binding in the cpumask. This function -\/only-\/ returns something other than O\+P\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S if an actual error is encountered. You will need to check the mask to find out if this process is actually bound somewhere specific -\/ a macro for that purpose is provided above \hypertarget{paffinity_8h_a019263df0e9bd9017f7c8f344d52280e}{\index{paffinity.\+h@{paffinity.\+h}!opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+map\+\_\+to\+\_\+processor\+\_\+id\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+map\+\_\+to\+\_\+processor\+\_\+id\+\_\+fn\+\_\+t}}
\index{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+map\+\_\+to\+\_\+processor\+\_\+id\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+map\+\_\+to\+\_\+processor\+\_\+id\+\_\+fn\+\_\+t}!paffinity.\+h@{paffinity.\+h}}
\subsubsection[{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+map\+\_\+to\+\_\+processor\+\_\+id\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+map\+\_\+to\+\_\+processor\+\_\+id\+\_\+fn\+\_\+t)(int physical\+\_\+socket, int physical\+\_\+core, int $\ast$physical\+\_\+processor\+\_\+id)}}\label{paffinity_8h_a019263df0e9bd9017f7c8f344d52280e}


Returns mapping of P\+H\+Y\+S\+I\+C\+A\+L socket\+:core -\/$>$ P\+H\+Y\+S\+I\+C\+A\+L processor id. 

Return O\+P\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S or O\+P\+A\+L\+\_\+\+E\+R\+R\+\_\+\+N\+O\+T\+\_\+\+S\+U\+P\+P\+O\+R\+T\+E\+D if not supported \hypertarget{paffinity_8h_a3a166fefaf19da5e68171978703f4702}{\index{paffinity.\+h@{paffinity.\+h}!opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+map\+\_\+to\+\_\+socket\+\_\+core\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+map\+\_\+to\+\_\+socket\+\_\+core\+\_\+fn\+\_\+t}}
\index{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+map\+\_\+to\+\_\+socket\+\_\+core\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+map\+\_\+to\+\_\+socket\+\_\+core\+\_\+fn\+\_\+t}!paffinity.\+h@{paffinity.\+h}}
\subsubsection[{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+map\+\_\+to\+\_\+socket\+\_\+core\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+map\+\_\+to\+\_\+socket\+\_\+core\+\_\+fn\+\_\+t)(int physical\+\_\+processor\+\_\+id, int $\ast$physical\+\_\+socket, int $\ast$physical\+\_\+core)}}\label{paffinity_8h_a3a166fefaf19da5e68171978703f4702}


Provides mapping of P\+H\+Y\+S\+I\+C\+A\+L processor id -\/$>$ P\+H\+Y\+S\+I\+C\+A\+L socket\+:core. 

Return O\+P\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S or O\+P\+A\+L\+\_\+\+E\+R\+R\+\_\+\+N\+O\+T\+\_\+\+S\+U\+P\+P\+O\+R\+T\+E\+D if not supported \hypertarget{paffinity_8h_a92ca5445ec79f61e7fdacab3fd422783}{\index{paffinity.\+h@{paffinity.\+h}!opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+core\+\_\+id\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+core\+\_\+id\+\_\+fn\+\_\+t}}
\index{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+core\+\_\+id\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+core\+\_\+id\+\_\+fn\+\_\+t}!paffinity.\+h@{paffinity.\+h}}
\subsubsection[{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+core\+\_\+id\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+core\+\_\+id\+\_\+fn\+\_\+t)(int physical\+\_\+socket\+\_\+id, int logical\+\_\+core\+\_\+id, int $\ast$physical\+\_\+core\+\_\+id)}}\label{paffinity_8h_a92ca5445ec79f61e7fdacab3fd422783}


Provide the P\+H\+Y\+S\+I\+C\+A\+L core I\+D that corresponds to the given L\+O\+G\+I\+C\+A\+L core I\+D on the given P\+H\+Y\+S\+I\+C\+A\+L socket I\+D. 

Return O\+P\+A\+L\+\_\+\+E\+R\+R\+\_\+\+N\+O\+T\+\_\+\+S\+U\+P\+P\+O\+R\+T\+E\+D if not supported. \hypertarget{paffinity_8h_a30c2c343fd025712822deb2308e1f965}{\index{paffinity.\+h@{paffinity.\+h}!opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+processor\+\_\+id\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+processor\+\_\+id\+\_\+fn\+\_\+t}}
\index{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+processor\+\_\+id\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+processor\+\_\+id\+\_\+fn\+\_\+t}!paffinity.\+h@{paffinity.\+h}}
\subsubsection[{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+processor\+\_\+id\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+processor\+\_\+id\+\_\+fn\+\_\+t)(int logical\+\_\+processor\+\_\+id, int $\ast$physical\+\_\+processor\+\_\+id)}}\label{paffinity_8h_a30c2c343fd025712822deb2308e1f965}


Provide the P\+H\+Y\+S\+I\+C\+A\+L processor I\+D that corresponds to the given L\+O\+G\+I\+C\+A\+L processor I\+D. 

Return O\+P\+A\+L\+\_\+\+E\+R\+R\+\_\+\+N\+O\+T\+\_\+\+S\+U\+P\+P\+O\+R\+T\+E\+D if not supported. \hypertarget{paffinity_8h_a16ac34318a1ce32bdd8a16421ebeb1d2}{\index{paffinity.\+h@{paffinity.\+h}!opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+socket\+\_\+id\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+socket\+\_\+id\+\_\+fn\+\_\+t}}
\index{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+socket\+\_\+id\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+socket\+\_\+id\+\_\+fn\+\_\+t}!paffinity.\+h@{paffinity.\+h}}
\subsubsection[{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+socket\+\_\+id\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+physical\+\_\+socket\+\_\+id\+\_\+fn\+\_\+t)(int logical\+\_\+socket\+\_\+id, int $\ast$physical\+\_\+socket\+\_\+id)}}\label{paffinity_8h_a16ac34318a1ce32bdd8a16421ebeb1d2}


Provide the P\+H\+Y\+S\+I\+C\+A\+L socket I\+D that corresponds to the given L\+O\+G\+I\+C\+A\+L socket I\+D. 

Return O\+P\+A\+L\+\_\+\+E\+R\+R\+\_\+\+N\+O\+T\+\_\+\+S\+U\+P\+P\+O\+R\+T\+E\+D if not supported. \hypertarget{paffinity_8h_a6b8c24a204a082264957bd08f3cf6b3e}{\index{paffinity.\+h@{paffinity.\+h}!opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+processor\+\_\+info\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+processor\+\_\+info\+\_\+fn\+\_\+t}}
\index{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+processor\+\_\+info\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+processor\+\_\+info\+\_\+fn\+\_\+t}!paffinity.\+h@{paffinity.\+h}}
\subsubsection[{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+processor\+\_\+info\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+processor\+\_\+info\+\_\+fn\+\_\+t)(int $\ast$num\+\_\+processors)}}\label{paffinity_8h_a6b8c24a204a082264957bd08f3cf6b3e}


Provides number of L\+O\+G\+I\+C\+A\+L processors in a host. 

Return O\+P\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S or O\+P\+A\+L\+\_\+\+E\+R\+R\+\_\+\+N\+O\+T\+\_\+\+S\+U\+P\+P\+O\+R\+T\+E\+D if not supported \hypertarget{paffinity_8h_a96814335de54036a5bb213107432e260}{\index{paffinity.\+h@{paffinity.\+h}!opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+socket\+\_\+info\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+socket\+\_\+info\+\_\+fn\+\_\+t}}
\index{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+socket\+\_\+info\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+socket\+\_\+info\+\_\+fn\+\_\+t}!paffinity.\+h@{paffinity.\+h}}
\subsubsection[{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+socket\+\_\+info\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+get\+\_\+socket\+\_\+info\+\_\+fn\+\_\+t)(int $\ast$num\+\_\+sockets)}}\label{paffinity_8h_a96814335de54036a5bb213107432e260}


Provides the number of L\+O\+G\+I\+C\+A\+L sockets in a host. 

Return O\+P\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S or O\+P\+A\+L\+\_\+\+E\+R\+R\+\_\+\+N\+O\+T\+\_\+\+S\+U\+P\+P\+O\+R\+T\+E\+D if not supported \hypertarget{paffinity_8h_a7d6d3f5bff1eb87f8b4ce91dd461f6ee}{\index{paffinity.\+h@{paffinity.\+h}!opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+init\+\_\+1\+\_\+1\+\_\+0\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+init\+\_\+1\+\_\+1\+\_\+0\+\_\+fn\+\_\+t}}
\index{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+init\+\_\+1\+\_\+1\+\_\+0\+\_\+fn\+\_\+t@{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+init\+\_\+1\+\_\+1\+\_\+0\+\_\+fn\+\_\+t}!paffinity.\+h@{paffinity.\+h}}
\subsubsection[{opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+init\+\_\+1\+\_\+1\+\_\+0\+\_\+fn\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef int($\ast$ opal\+\_\+paffinity\+\_\+base\+\_\+module\+\_\+init\+\_\+1\+\_\+1\+\_\+0\+\_\+fn\+\_\+t)(void)}}\label{paffinity_8h_a7d6d3f5bff1eb87f8b4ce91dd461f6ee}


Module initialization function. 

Should return O\+P\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S. 