<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:"Malgun Gothic";
        panose-1:2 11 5 3 2 0 0 2 0 4;}
@font-face
        {font-family:"Malgun Gothic";
        panose-1:2 11 5 3 2 0 0 2 0 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        text-justify:inter-ideograph;
        text-autospace:none;
        word-break:break-hangul;
        font-size:10.0pt;
        font-family:"Malgun Gothic";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:40.0pt;
        margin-bottom:.0001pt;
        mso-para-margin-top:0cm;
        mso-para-margin-right:0cm;
        mso-para-margin-bottom:0cm;
        mso-para-margin-left:4.0gd;
        mso-para-margin-bottom:.0001pt;
        text-align:justify;
        text-justify:inter-ideograph;
        text-autospace:none;
        word-break:break-hangul;
        font-size:10.0pt;
        font-family:"Malgun Gothic";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Malgun Gothic";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Malgun Gothic";}
/* Page Definitions */
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:3.0cm 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:2088721622;
        mso-list-type:hybrid;
        mso-list-template-ids:1001261062 568242020 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:38.0pt;
        text-indent:-18.0pt;
        font-family:"Malgun Gothic";
        mso-bidi-font-family:"Times New Roman";}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:\F06E;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:60.0pt;
        text-indent:-20.0pt;
        font-family:Wingdings;}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F075;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:80.0pt;
        text-indent:-20.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F06C;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:100.0pt;
        text-indent:-20.0pt;
        font-family:Wingdings;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F06E;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:120.0pt;
        text-indent:-20.0pt;
        font-family:Wingdings;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F075;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:140.0pt;
        text-indent:-20.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F06C;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:160.0pt;
        text-indent:-20.0pt;
        font-family:Wingdings;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F06E;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:180.0pt;
        text-indent:-20.0pt;
        font-family:Wingdings;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F075;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:200.0pt;
        text-indent:-20.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=KO link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span lang=EN-US>Hello,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>We are developing a compute accelerator and I’m not sure which is the best or normal way to implement the waiting method for the application until the computing is finished by the accelerator.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>The application first sets up input data and configuration for the accelerator on the memory. It then calls an ioctl which sets up the registers and it calls another ioctl which trigger the accelerator.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>My idea is : <o:p></o:p></span></p><ul style='margin-top:0cm' type=disc><li class=MsoListParagraph style='margin-left:2.0pt;mso-para-margin-left:0gd;mso-list:l0 level1 lfo1'><span lang=EN-US>The application process goes into wait queue after calling the second ioctl by telling the OS “keep me in the wait queue and wake me up when ‘this’ signal comes’. <o:p></o:p></span></li><li class=MsoListParagraph style='margin-left:2.0pt;mso-para-margin-left:0gd;mso-list:l0 level1 lfo1'><span lang=EN-US>The driver’s ISR process sends a signal to the sleeping user process when processing the ‘computing complete’ interrupt.<o:p></o:p></span></li></ul><p class=MsoNormal><span lang=EN-US>Does this make sense? (Can I define and use a signal for this purpose?) <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>And if it does, what function calls should I use? I would appreciate sending me any link for suggested reading.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>It should be possible to use accelerator for multiple processes at the same time, but I think for now we can just do with single application.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Thanks!<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Chan Kim<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div></body></html>