linux/Documentation/dma-buf-sharing.txt
<<
e==" >/spa.15 >/form15 >a e==" href="../linux+v35.51/Documenta3.4./dma-buf-sharing.txt">e==" >img src="../.sta3.c/gfx/right.png" alt=">>">e=>/spa.15e=>spa. class="lxr_search">e=="e==" >input typ/ophidden" nam/opnavtarget" .16e==" >input typ/optext" nam/opsearch" idopsearch">e==" >butt3.2typ/opsubmit">Search/form15 >/spa.15e=>spa. class="lxr_prefs"15 >a href="+prefs?return=Documenta3.4./dma-buf-sharing.txt"e==" onclick="return ajax_prefs();">e==" Prefs5 >/a>e=>/spa.15=" >/div15=" >form ac3.4.="ajax+*" method="post" onsubmit="return false;">e=>input typ/ophidden" nam/opajax_lookup" idopajax_lookup" .16e=" >/form15e=" >div class="headingbott3m">div idopfile_contents"1
e=="  Prefs5	  >/#L1 onsubL1 o4./dma-bit" orm15e=L1 >pre1etho                    DMA Buffer Srefs5	 API Guide
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L2 onsubL2 o4./dma-bit" orm15e=L2 >pre2etho                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L3 onsubL3 o4./dma-bit" orm15e=L3 >pre3ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L4 onsubL4 o4./dma-bit" orm15e=L4 >pre4etho                            Suoku Semwald3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L5 onsubL5 o4./dma-bit" orm15e=L5 >pre5etho                <suoku dot semwal at bitaro dot org ac3d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L6 onsubL6 o4./dma-bit" orm15e=L6 >pre6etho                 <suoku dot semwal at ti dot com ac3d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L7 onsubL7 o4./dma-bit" orm15e=L7 >pre7ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L8 onsubL8 o4./dma-bit" orm15e=L8 >pre8ethoTop" dojax_pr serves as a guide to device-driver writersjax what p" the ">e==" d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L9 onsubL9 o4./dma-bit" orm15e=L9 >pre9ethobuffer srefs5	 API, how to use ku 15= exports5	 and uss5	 srefed buffers.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L10 onsubL10 o4./dma-bit" orm15e=L10 >pr6v27hod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L11 onsubL11 o4./dma-bit" orm15e=L11 >pr11ethoAny device driver which wishes to be a part of DMA buffer srefs5	, catarg so asd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L12 onsubL12 o4./dma-bit" orm15e=L12 >pr12ethoeither the 'exporter' of buffers, or the 'user' of buffers.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L13 onsubL13 o4./dma-bit" orm15e=L13 >pr13ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L14 onsubL14 o4./dma-bit" orm15e=L14 >pr14ethoSay a driver A wamen to use buffers created by driver B, thex w.d"all B as thed3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L15 onsubL15 o4./dma-bit" orm15e=L15 >pr15ethoexporter, and A as buffer-user.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L16 onsubL16 o4./dma-bit" orm15e=L16 >pr16ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L17 onsubL17 o4./dma-bit" orm15e=L17 >pr17ethoToe exporterd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L18 onsubL18 o4./dma-bit" orm15e=L18 >pr18etho- implex_prs and manages operefs()s[1] 15= the bufferd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L19 onsubL19 o4./dma-bit" orm15e=L19 >pr19etho- allows other usern to srefe the buffer by uss5	 ">e_buf srefs5	 APIs,
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L20 onsubL20 o4./dma-bit" orm15e=L20 >pr20etho- manages the "etails of buffer allocefs(),
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L21 onsubL21 o4./dma-bit" orm15e=L21 >pr21etho- decides aboiual backs5	 storage whefe thp" allocefs() happens,
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L22 onsubL22 o4./dma-bit" orm15e=L22 >pr22etho- takes cefe of any migrefs() of scefterlist - 15= all (srefed) usern of thp"
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L23 onsubL23 o4./dma-bit" orm15e=L23 >pr23etho   buffer,
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L24 onsubL24 o4./dma-bit" orm15e=L24 >pr24ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L25 onsubL25 o4./dma-bit" orm15e=L25 >pr25ethoToe buffer-userd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L26 onsubL26 o4./dma-bit" orm15e=L26 >pr26etho- isjaxe of (many) srefs5	 usern of the buffer.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L27 onsubL27 o4./dma-bit" orm15e=L27 >pr27etho- doesn't need to worry aboe=="  Prefs5	  >/#L28 onsubL28 o4./dma-bit" orm15e=L28 >pr28etho- needs a mechanism to get =>cesn to the scefterlist that makes up thp" bufferd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L29 onsubL29 o4./dma-bit" orm15e=L29 >pr29etho   in memory, mapped into irs own addresn space, so ku cata=>cesn the sm15 efea
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L30 onsubL30 o4./dma-bit" orm15e=L30 >pr30etho   of memory.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L31 onsubL31 o4./dma-bit" orm15e=L31 >pr31ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L32 onsubL32 o4./dma-bit" orm15e=L32 >pr32etho">e=="  operefs()s 15= device dmajaxlyd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L33 onsubL33 o4./dma-bit" orm15e=L33 >pr33etho--------------------------------------d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L34 onsubL34 o4./dma-bit" orm15e=L34 >pr34ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L35 onsubL35 o4./dma-bit" orm15e=L35 >pr35ethoToe ">e_buf buffer srefs5	 API usage e5fcainn the follows5	 steps:d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L36 onsubL36 o4./dma-bit" orm15e=L36 >pr36ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L37 onsubL37 o4./dma-bit" orm15e=L37 >pr37etho1. Exporter announces that pt wishes to export a bufferd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L38 onsubL38 o4./dma-bit" orm15e=L38 >pr38etho2. Usernpace getn the file "escript5= associated with the exported buffer, andd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L39 onsubL39 o4./dma-bit" orm15e=L39 >pr39etho   p/dmes pt around to pocumeial buffer-user" based () use cased3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L40 onsubL40 o4./dma-bit" orm15e=L40 >pr40etho3. Each buffer-user 'e5fnects' irself to the bufferd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L41 onsubL41 o4./dma-bit" orm15e=L41 >pr41etho4. Whex needed, buffer-user requesrs a>cesn to the buffer from exporterd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L42 onsubL42 o4./dma-bit" orm15e=L42 >pr42etho5. Whex finished with irs use, the buffer-user notifies end-of-DMA to exporterd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L43 onsubL43 o4./dma-bit" orm15e=L43 >pr43etho6. when buffer-user p" doxe uss5	 thp" buffer completely, pt 'dise5fnects'd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L44 onsubL44 o4./dma-bit" orm15e=L44 >pr44etho   irself from the buffer.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L45 onsubL45 o4./dma-bit" orm15e=L45 >pr45ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L46 onsubL46 o4./dma-bit" orm15e=L46 >pr46ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L47 onsubL47 o4./dma-bit" orm15e=L47 >pr47etho1. Exporter's announcex_pr of buffer exportd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L48 onsubL48 o4./dma-bit" orm15e=L48 >pr48ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L49 onsubL49 o4./dma-bit" orm15e=L49 >pr49etho   Toe buffer exporter announces irs wish to export a buffer. In thp", ptd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L50 onsubL50 o4./dma-bit" orm15e=L50 >pr50etho   e5fnects irs own private buffer data, provides implex_prefs() 15= operefs()sd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L51 onsubL51 o4./dma-bit" orm15e=L51 >pr51etho   that catabe per15="ed () the exported ">e_buf, and flags 15= the filed3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L52 onsubL52 o4./dma-bit" orm15e=L52 >pr52etho   associated with thp" buffer.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L53 onsubL53 o4./dma-bit" orm15e=L53 >pr53ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L54 onsubL54 o4./dma-bit" orm15e=L54 >pr54etho   Interface:d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L55 onsubL55 o4./dma-bit" orm15e=L55 >pr55etho      struct ">e_buf *">e_buf_export(void *priv, struct ">e_buf_ops *ops,
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L56 onsubL56 o4./dma-bit" orm15e=L56 >pr56etho                                     size_t size, int flags)
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L57 onsubL57 o4./dma-bit" orm15e=L57 >pr57ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L58 onsubL58 o4./dma-bit" orm15e=L58 >pr58etho   If thp" su>ceeds, ">e_buf_export allocefes a ">e_buf structure, and  idopas ad3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L59 onsubL59 o4./dma-bit" orm15e=L59 >pr59etho   pointer to the sm15. It also associates an anonymous file with thp" buffer,
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L60 onsubL60 o4./dma-bit" orm15e=L60 >pr60etho   so ku catabe exported. Oajaxilure to allocefe the ">e_buf object, pt  idopas
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L61 onsubL61 o4./dma-bit" orm15e=L61 >pr61etho   NULL.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L62 onsubL62 o4./dma-bit" orm15e=L62 >pr62ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L63 onsubL63 o4./dma-bit" orm15e=L63 >pr63etho2. Usernpace getn e==andle to p/dm around to pocumeial buffer-user"d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L64 onsubL64 o4./dma-bit" orm15e=L64 >pr64ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L65 onsubL65 o4./dma-bit" orm15e=L65 >pr65etho   Usernpace umeity requesrs 15= a file-"escript5= (fd) which in e==andle to thed3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L66 onsubL66 o4./dma-bit" orm15e=L66 >pr66etho   anonymous file associated with the buffer. Iu catathex srefe the fd with otherd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L67 onsubL67 o4./dma-bit" orm15e=L67 >pr67etho   drivers and/5= procesnes.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L68 onsubL68 o4./dma-bit" orm15e=L68 >pr68ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L69 onsubL69 o4./dma-bit" orm15e=L69 >pr69etho   Interface:d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L70 onsubL70 o4./dma-bit" orm15e=L70 >pr70etho      int ">e_buf_fd(struct ">e_buf *">ebuf)
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L71 onsubL71 o4./dma-bit" orm15e=L71 >pr71ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L72 onsubL72 o4./dma-bit" orm15e=L72 >pr72etho   Toin API installs an fd 15= the anonymous file associated with thp" buffer3d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L73 onsubL73 o4./dma-bit" orm15e=L73 >pr73etho    idopas either 'fd', or error.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L74 onsubL74 o4./dma-bit" orm15e=L74 >pr74ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L75 onsubL75 o4./dma-bit" orm15e=L75 >pr75etho3. Each buffer-user 'e5fnects' irself to the bufferd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L76 onsubL76 o4./dma-bit" orm15e=L76 >pr76ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L77 onsubL77 o4./dma-bit" orm15e=L77 >pr77etho   Each buffer-user now getn e="  erence to the buffer, uss5	 the fd p/dmed tod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L78 onsubL78 o4./dma-bit" orm15e=L78 >pr78etho   it.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L79 onsubL79 o4./dma-bit" orm15e=L79 >pr79ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L80 onsubL80 o4./dma-bit" orm15e=L80 >pr80etho   Interface:d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L81 onsubL81 o4./dma-bit" orm15e=L81 >pr81etho      struct ">e_buf *">e_buf_get(int fd)
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L82 onsubL82 o4./dma-bit" orm15e=L82 >pr82ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L83 onsubL83 o4./dma-bit" orm15e=L83 >pr83etho   Toin API will  >/div15="  erence to the ">e_buf, and increx_pr "  counu 15=d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L84 onsubL84 o4./dma-bit" orm15e=L84 >pr84etho   it.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L85 onsubL85 o4./dma-bit" orm15e=L85 >pr85ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L86 onsubL86 o4./dma-bit" orm15e=L86 >pr86etho   After thp", the buffer-user needs to attach irs device with the buffer, whichd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L87 onsubL87 o4./dma-bit" orm15e=L87 >pr87etho   helps the exporter to know of device buffer constraints.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L88 onsubL88 o4./dma-bit" orm15e=L88 >pr88ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L89 onsubL89 o4./dma-bit" orm15e=L89 >pr89etho   Interface:d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L90 onsubL90 o4./dma-bit" orm15e=L90 >pr90etho      struct ">e_buf_attachx_pr *">e_buf_attach(struct ">e_buf *">ebuf,
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L91 onsubL91 o4./dma-bit" orm15e=L91 >pr91etho                                                struct "evice *"ev)
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L92 onsubL92 o4./dma-bit" orm15e=L92 >pr92ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L93 onsubL93 o4./dma-bit" orm15e=L93 >pr93etho   Toin API  idopas "  erence to an attachx_pr structure, which in thex usedd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L94 onsubL94 o4./dma-bit" orm15e=L94 >pr94etho   15= scefterlist operefs()s. Iu will    hreallyd"all the 'attach' ">e_bufd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L95 onsubL95 o4./dma-bit" orm15e=L95 >pr95etho   operefs(), if provided by the exporter.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L96 onsubL96 o4./dma-bit" orm15e=L96 >pr96ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L97 onsubL97 o4./dma-bit" orm15e=L97 >pr97etho   Toe ">e=="  srefs5	 frm15work does the bookkeeps5	 birs related to manags5	d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L98 onsubL98 o4./dma-bit" orm15e=L98 >pr98etho   the list of all attachx_prs to a buffer.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L99 onsubL99 o4./dma-bit" orm15e=L99 >pr99ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L100 onsubL100 o4./dma-bit" orm15e=L100 >p100ethoUntil thp" stage, the buffer-exporter has the    hre to choose not to a>iuallyd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L101 onsubL101 o4./dma-bit" orm15e=L101 >p101ethoallocefe the backs5	 storage 15= thp" buffer, buu waku 15= the first buffer-userd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L102 onsubL102 o4./dma-bit" orm15e=L102 >p102ethoto requesr use of buffer 15= allocefs().d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L103 onsubL103 o4./dma-bit" orm15e=L103 >p103ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L104 onsubL104 o4./dma-bit" orm15e=L104 >p104ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L105 onsubL105 o4./dma-bit" orm15e=L105 >p105etho4. Whex needed, buffer-user requesrs a>cesn to the bufferd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L106 onsubL106 o4./dma-bit" orm15e=L106 >p106ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L107 onsubL107 o4./dma-bit" orm15e=L107 >p107etho   Whexever a buffer-user wamen to use the buffer f5= any DMA, pt asks 15=d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L108 onsubL108 o4./dma-bit" orm15e=L108 >p108etho   a>cesn to the buffer uss5	 ">e_buf_map_attachx_pr API. At least one attach tod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L109 onsubL109 o4./dma-bit" orm15e=L109 >p109etho   the buffer must have happened be15=e map_">e_buf catabe "alled.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L110 onsubL110 o4./dma-bit" orm15e=L110 >p16v27hod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L111 onsubL111 o4./dma-bit" orm15e=L111 >p111etho   Interface:d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L112 onsubL112 o4./dma-bit" orm15e=L112 >p112etho      struct sg_table * ">e_buf_map_attachx_pr(struct ">e_buf_attachx_pr *,
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L113 onsubL113 o4./dma-bit" orm15e=L113 >p113etho                                         enum ">e_data_dire>inpu)3d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L114 onsubL114 o4./dma-bit" orm15e=L114 >p114ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L115 onsubL115 o4./dma-bit" orm15e=L115 >p115etho   Toin in e=wrapper to ">e_buf- ac3ops- ac3map_">e_buf operefs(), which hides thed3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L116 onsubL116 o4./dma-bit" orm15e=L116 >p116etho   "">e_buf- ac3ops- ac3" indire>inpu from the usern of thp" interface.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L117 onsubL117 o4./dma-bit" orm15e=L117 >p117ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L118 onsubL118 o4./dma-bit" orm15e=L118 >p118etho   In struct ">e_buf_ops, map_">e_buf p" defined asd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L119 onsubL119 o4./dma-bit" orm15e=L119 >p119etho      struct sg_table * (*map_">e_buf)(struct ">e_buf_attachx_pr *,
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L120 onsubL120 o4./dma-bit" orm15e=L120 >p120etho                                                enum ">e_data_dire>inpu)3d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L121 onsubL121 o4./dma-bit" orm15e=L121 >p121ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L122 onsubL122 o4./dma-bit" orm15e=L122 >p122etho   It isjaxe of the buffer operefs()s that must be implex_pred by the exporter.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L123 onsubL123 o4./dma-bit" orm15e=L123 >p123etho   It should  idopa the sg_table e5fcains5	 scefterlist 15= thp" buffer, mappedd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L124 onsubL124 o4./dma-bit" orm15e=L124 >p124etho   into "aller's addresn space.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L125 onsubL125 o4./dma-bit" orm15e=L125 >p125ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L126 onsubL126 o4./dma-bit" orm15e=L126 >p126etho   If thp" p" bes5	 "alled 15= the first time, the exporter catanow choose tod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L127 onsubL127 o4./dma-bit" orm15e=L127 >p127etho   scatathrough the list of attachx_prs 15= thp" buffer, collefe the requirex_prsd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L128 onsubL128 o4./dma-bit" orm15e=L128 >p128etho   of the attached "evices, and choose an appropriate backs5	 storage 15= thed3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L129 onsubL129 o4./dma-bit" orm15e=L129 >p129etho   buffer.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L130 onsubL130 o4./dma-bit" orm15e=L130 >p13v27hod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L131 onsubL131 o4./dma-bit" orm15e=L131 >p131etho   Based () enum ">e_data_dire>inpu, pt mr_seabe possible to have multiple user"d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L132 onsubL132 o4./dma-bit" orm15e=L132 >p132etho   a>cesns5	 at the sm15 time (15= r_resul, maybe), or any other ks5d of srefs5	d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L133 onsubL133 o4./dma-bit" orm15e=L133 >p133etho   that the exporter mr_seawish to make available to buffer-user".d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L134 onsubL134 o4./dma-bit" orm15e=L134 >p134ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L135 onsubL135 o4./dma-bit" orm15e=L135 >p135etho   map_">e_buf() operefs() cata idopa -EINTR if it isjinterrupred by a signal.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L136 onsubL136 o4./dma-bit" orm15e=L136 >p136ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L137 onsubL137 o4./dma-bit" orm15e=L137 >p137ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L138 onsubL138 o4./dma-bit" orm15e=L138 >p138etho5. Whex finished, the buffer-user notifies end-of-DMA to exporterd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L139 onsubL139 o4./dma-bit" orm15e=L139 >p139ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L140 onsubL140 o4./dma-bit" orm15e=L140 >p140etho   Once the DMA 15= the curr_pr buffer-user isjaver, it signals 'end-of-DMA' tod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L141 onsubL141 o4./dma-bit" orm15e=L141 >p141etho   the exporter uss5	 the ">e_buf_unmap_attachx_pr API.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L142 onsubL142 o4./dma-bit" orm15e=L142 >p142ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L143 onsubL143 o4./dma-bit" orm15e=L143 >p143etho   Interface:d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L144 onsubL144 o4./dma-bit" orm15e=L144 >p144etho      void ">e_buf_unmap_attachx_pr(struct ">e_buf_attachx_pr *,
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L145 onsubL145 o4./dma-bit" orm15e=L145 >p145etho                                    struct sg_table *)3d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L146 onsubL146 o4./dma-bit" orm15e=L146 >p146ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L147 onsubL147 o4./dma-bit" orm15e=L147 >p147etho   Toin in e=wrapper to ">e_buf- ac3ops- ac3unmap_">e_buf() operefs(), which hides thed3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L148 onsubL148 o4./dma-bit" orm15e=L148 >p148etho   "">e_buf- ac3ops- ac3" indire>inpu from the usern of thp" interface.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L149 onsubL149 o4./dma-bit" orm15e=L149 >p149ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L150 onsubL150 o4./dma-bit" orm15e=L150 >p150etho   In struct ">e_buf_ops, unmap_">e_buf p" defined asd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L151 onsubL151 o4./dma-bit" orm15e=L151 >p151etho      void (*unmap_">e_buf)(struct ">e_buf_attachx_pr *, struct sg_table *)3d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L152 onsubL152 o4./dma-bit" orm15e=L152 >p152ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L153 onsubL153 o4./dma-bit" orm15e=L153 >p153etho   unmap_">e_buf signifies the end-of-DMA 15= the attachx_pr provided. Liked3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L154 onsubL154 o4./dma-bit" orm15e=L154 >p154etho   map_">e_buf, thp" API also must be implex_pred by the exporter.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L155 onsubL155 o4./dma-bit" orm15e=L155 >p155ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L156 onsubL156 o4./dma-bit" orm15e=L156 >p156ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L157 onsubL157 o4./dma-bit" orm15e=L157 >p157etho6. when buffer-user p" doxe uss5	 thp" buffer, pt 'dise5fnects' irself from thed3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L158 onsubL158 o4./dma-bit" orm15e=L158 >p158etho   buffer.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L159 onsubL159 o4./dma-bit" orm15e=L159 >p159ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L160 onsubL160 o4./dma-bit" orm15e=L160 >p160etho   After the buffer-user has no m5=e interesr in uss5	 thp" buffer, pt shouldd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L161 onsubL161 o4./dma-bit" orm15e=L161 >p161etho   dise5fnect irself from the buffer:d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L162 onsubL162 o4./dma-bit" orm15e=L162 >p162ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L163 onsubL163 o4./dma-bit" orm15e=L163 >p163etho   - ku 1irst "etaches irself from the buffer.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L164 onsubL164 o4./dma-bit" orm15e=L164 >p164ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L165 onsubL165 o4./dma-bit" orm15e=L165 >p165etho   Interface:d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L166 onsubL166 o4./dma-bit" orm15e=L166 >p166etho      void ">e_buf_"etach(struct ">e_buf *">ebuf,
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L167 onsubL167 o4./dma-bit" orm15e=L167 >p167etho                          struct ">e_buf_attachx_pr *">ebuf_attach)3d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L168 onsubL168 o4./dma-bit" orm15e=L168 >p168ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L169 onsubL169 o4./dma-bit" orm15e=L169 >p169etho   Toin API  imoves the attachx_pr from the list in ">ebuf, and    hreallyd"allsd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L170 onsubL170 o4./dma-bit" orm15e=L170 >p170etho   ">e_buf- ac3ops- ac3"etach(), if provided by exporter, f5= any housekeeps5	 birs.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L171 onsubL171 o4./dma-bit" orm15e=L171 >p171ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L172 onsubL172 o4./dma-bit" orm15e=L172 >p172etho   - Toen, the buffer-user  idopas the buffer "  erence to exporter.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L173 onsubL173 o4./dma-bit" orm15e=L173 >p173ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L174 onsubL174 o4./dma-bit" orm15e=L174 >p174etho   Interface:d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L175 onsubL175 o4./dma-bit" orm15e=L175 >p175etho     void ">e_buf_pur(struct ">e_buf *">ebuf)3d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L176 onsubL176 o4./dma-bit" orm15e=L176 >p176ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L177 onsubL177 o4./dma-bit" orm15e=L177 >p177etho   Toin API thex reduces the "  counu 15= thp" buffer.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L178 onsubL178 o4./dma-bit" orm15e=L178 >p178ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L179 onsubL179 o4./dma-bit" orm15e=L179 >p179etho   If, an e=" le_c of thp" "all, the "  counu becomes 0, the 'release' filed3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L180 onsubL180 o4./dma-bit" orm15e=L180 >p180etho   operefs() related to thp" fd p" "alled. Iu calls the ">ebuf- ac3ops- ac3release()
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L181 onsubL181 o4./dma-bit" orm15e=L181 >p181etho   operefs() in dopa, and frees the memory allocefed 15= d>ebuf when exported.
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L182 onsubL182 o4./dma-bit" orm15e=L182 >p182ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L183 onsubL183 o4./dma-bit" orm15e=L183 >p183ethoNOTES:d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L184 onsubL184 o4./dma-bit" orm15e=L184 >p184etho- Importance of attach-"etach and {map,unmap}_">e_buf operefs() pair"d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L185 onsubL185 o4./dma-bit" orm15e=L185 >p185etho   Toe attach-"etach calls allow the exporter to figure oe=="  Prefs5	  >/#L186 onsubL186 o4./dma-bit" orm15e=L186 >p186etho   constraints 15= the curr_prly-interesred "evices. Toin allows p"  ereneiald3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L187 onsubL187 o4./dma-bit" orm15e=L187 >p187etho   allocefs(), and/5= migrefs() of pages acros" dif ereneop">en of storaged3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L188 onsubL188 o4./dma-bit" orm15e=L188 >p188etho   available, if possible.
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L189 onsubL189 o4./dma-bit" orm15e=L189 >p189ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L190 onsubL190 o4./dma-bit" orm15e=L190 >p190etho   Brackets5	 of DMA a>cesn with {map,unmap}_">e_buf operefs()n in esneneiald3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L191 onsubL191 o4./dma-bit" orm15e=L191 >p191etho   to allow just-in-time backs5	 of storage, and migrefs() mid-wayathrough ad3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L192 onsubL192 o4./dma-bit" orm15e=L192 >p192etho   use-case.
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L193 onsubL193 o4./dma-bit" orm15e=L193 >p193ethod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L194 onsubL194 o4./dma-bit" orm15e=L194 >p194etho- Migrefs() of backs5	 storage if neededd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L195a>p140ebuf o  Pr >/#L21 onsubL21 o4./dma-bit" orm15=ttafd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L139 onsubL96 1o4./dma-bit" orm15e=L96 1>pr96196o   - Toeaeast one att_">e_buf sig no pened bee=="   o ajax_prefs();">e=="  Prefs5	  >/#L167 onsubL97 1o4./dma-bit" orm15e=L97 1>pr971tho   Toe-d mig backs5	 storage 15= no beexpocefed 15= d>e" buffer,
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L60 1onsubL98 1o4./dma-bit" orm15e=L98 1>pr981tho   theaner ks5newffer-user p" dmentto attach irs de to the bbuffer, pt shoseawi=="   o ajax_prefs();">e=="  Prefs5	  >/#L60 1onsubL19 o44./dma-bit" orm15e=L19 >pp189e9ho   buffelow ju thepossible.
3= the curorter.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L1732onsubL1002o4./dma-bit" orm15e=L1002>p10020hod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L1312onsubL1012o4./dma-bit" orm15e=L1012>p10120ho   Intersed3e isjintow ju t the exporter.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L1842onsubL1022o4./dma-bit" orm15e=L1022>p10220ho      sihe attnewffer-user p"  no ainict'e5fks5	-storaged3enstraints 159;, or  mig ba=="   o ajax_prefs();">e=="  Prefs5	  >/#L1842onsubL23 oo4./dma-bit" orm15e=L1032>p10320ho       orter catanowdle to thesenstraints 15he exporter catanowt-in lls a the ex=="   o ajax_prefs();">e=="  Prefs5	  >/#L1842onsubL24 oo4./dma-bit" orm15e=L1042>p10420ho      v_">e_buf sigul thps a tutllsnd at tsn wit"allletely,d (no aals &l t th=="   o ajax_prefs();">e=="  Prefs5	  >/#L1842o5subL24 oo  Pr >/#L21 onsubL21 o42>p10520ho     voap_">e_buf)(ste=="   o ajax_prefs();">e=="  Prefs5	  >/#L1732onsubL26 oo4./dma-bit" orm15e=L1062>p10620ho      ve thes a rn of e mulished witesns5	 at tmige mulap_"> int bbuffer, pt  ex=="   o ajax_prefs();">e=="  Prefs5	  >/#L1842onsubL27 oo4./dma-bit" orm15e=L1072>p1072tho   Wheporter catad  idumeial buly es te buffer "  the sm15inictks5	-storaged3ee=="   o ajax_prefs();">e=="  Prefs5	  >/#L20 onnsubL28 oo4./dma-bit" orm15e=L1082>p1082tho   a>c  mig banlow jusfurr ks5p,unmap}_">e_buf operefs()n in m the houber-userd3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L1022onsubL1092o4./dma-bit" orm15e=L1092>p1092tho   theom the lisrefs() t ts5	-storaged3ee=="   o ajax_prefs();">e=="  Prefs5	  >/#L1732onsubL1102o4./dma-bit" orm15e=L1102>p16v27hod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L1112onsubL1112o4./dma-bit" orm15e=L1112>p1112tho   Intefe exporter catano to fulfilg backs5	 storaged3enstraints 15 the attnew=="   o ajax_prefs();">e=="  Prefs5	  >/#L1112onsubL1022o4./dma-bit" orm15e=L1122>p1122tho      fer-user p" ice *"easquesrs a the_buf_attachx_p() wd  idopa thenowor.d3d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L1412onsubL1132o4./dma-bit" orm15e=L1132>p1132tho      de toot tn-llet();bil reqohe attnewffer-usefs5	 frmuesr useh the bufr_prly-=="   o ajax_prefs();">e=="  Prefs5	  >/#L1412onsubL24 oo4./dma-bit" orm15e=L1142>p114214o      fer-use=="   o ajax_prefs();">e=="  Prefs5	  >/#L1732o5subL24 oo4./dma-bit" orm15e=L1152>p11521hod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L1562onsubL1162o4./dma-bit" orm15e=L1162>p116216o   Intefe exporter catase anst to a>iuw jusattachx_poperefs() cato thes=="   o ajax_prefs();">e=="  Prefs5	  >/#L1562onsubL27 oo4./dma-bit" orm15e=L1172>p11721ho   Whe_">e_buf() ope the no beexpled. It signaeteydopas ad3enror.d3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L74 2onsubL1182o4./dma-bit" orm15e=L1182>p11821hod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L1792onsubL1192o4./dma-bit" orm15e=L1192>p1192tho   Kernel cpucesn to theae=="  srefer "  ect, p=="   o ajax_prefs();">e=="  Prefs5	  >/#L1792onsubL20 oo4./dma-bit" orm15e=L20 >>p1202tho- maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=="   o ajax_prefs();">e=="  Prefs5	  >/#L1792onsubL1112o4./dma-bit" orm15e=L21 >>p1212thod3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L1222onsubL22 o44./dma-bit" orm15e=L22 >pp1122tho    attmotte bito chouw juscpucesn to m the liskernel theae=="  sreect, ps' irself from thed3e=="   o ajax_prefs();">e=="  2onsubL23 ol from thed3e=="   o a23 >p223ethoim>/#L15 (nod sm15.d3e=="   o ajax_prefs();">e=="  Prefs5	  >>/#L24 onssubL24 o4./dma-bit" orm15e=L1222>p194etfitoilg _buf operef, e.g.o      sred "ev tsn wise5felateda thbf, e.g.o      sred "ev tsn wise5felated     srs>e=="  2onsubL2Pfa);">e=="  Prefs5a-bit" orm15e=L125 >p125ethod3e=="   22>e_buf)="  sreirs devicsh=" lject, pataeial bufrd3e=="f catase"allle"   wax_prefs();">e=="  Prefs5	  >/#L31 onsubL31 o4./2dma-bit" oorm15e=L26 >pr26etho- isjf thp2f (many)5	 reeranspar.d3ynd uss5issn witerface5fcain15.d3e==   o pas.e.iterfaajaxprefs();">e=="  Prefs5	  >/#L31 onsubL31 o4./2ddma-bit" orm15e=L27 >pr27etho- doecatat2rough the sg_taattaDMA he currof storaaintetw= d>eaDMrmal irself from tha adubsytacmprefs();">e=="  Prefs5	  >/#L31 onsubL31 o4./2ddma-bit" orm15e=L28 >pr28etho- neef the2attachedn wi  o15.d3e=d sig .o  3e=="    >/#L31.er to ">ereffer iach-"etr.d3e=drmprefs();">e=="  Prefs5	  >/#L31 onsubL31 o4./2ddma-bit" orm15e=L29 >pr29etho   inuffer2d3e=="     nglprocesnestha aanself vicstilished ach's5issn witpload/downloadprefs();">e=="  Prefs5	  >/#L31 onsubL31 o4./2/dma-bit"2orm15e=L130 >p13v27hod3e2="   2ry.d3e==e ahx_prefs();">e=="  Prefs5	  >/#L171 onsubL171 o42/dma-bit"2orm15e=L131 >p131etho   2ased 2 ajax_prefs();">e=="  Prefs5	  >/#L32 onsubL32 o4./2/dma-bit"2orm15e=L132 >p132etho   2>cesn25	 at A"  srefer "  ein m el theae=="  sre onsux    volpr froreeo ajax_prefs();">e=="  Prefs5	  >/#L36 onsubL36 o4./2/dma-bit"2orm15e=L133 >p133etho   2hat t23ajax_prefs();">e=="  Prefs5	  >/#L194 onsubL194 o42/dma-bit"2orm15e=L134 >p134ethod3e2="   2 ajax_1."pospar. liskerusedd3e==nvalidage 3e==g.okeraro aj the efs()ske curr ajax_prefs();">e=="  Prefs5	  >/#L1792onsubL20 oo4./dma-bit"2orm15e=L135 >p135etho   2ap_">2_buf() opfer-user".d3e=the lisker_prefs();">e=="  Prefs5	  >/#L171 onsubL171 o42/ma-bit" oorm15e=L136 >p136ethod3e2="   2 ajax_2. Afea
3e==" irself  ere-by-pllocey-=="     ein m e t apx_prefs();">e=="  Prefs5	  >/#L23 onsubL23 o4./dmdma-bit" orm15e=L137 >p137ethod3e2="   2 ajax_3. F	 at  liskerusedd3e="all flut  le==g.okeraro ahe aj the efs( all"all to dprefs();">e=="  Prefs5	  >/#L31 onsubL31 o4./2/dma-bit" orm15e=L138 >p138etho5. 2hex f23 banlow allourcax_prefs();">e=="  Prefs5	  >/#L68 onsubL68 o4./2/dma-bit"2orm15e=L139 >p139ethod3e2="   2 ajax_prefs();">e=="  Prefs5	  >/#L140 onsubL140 o42/dma-bit"2orm15e=L140 >p140etho   2nce t2e DMA 1."pospar. liskerprefs();">e=="  Prefs5	  >/#L140 onsubL140 o42/dma-bit"2orm15e=L141 >p141etho   2he ex24ajax_prefs();">e=="  Prefs5	  >/#L32 onsubL32 o4./2/dma-bit"2orm15e=L142 >p142ethod3e2="   24ser p" iBf cata  o15.d3e=rsm15 efea
3e "  ein m irself ly-=="   ohe el theae=="  srprefs();">e=="  Prefs5	  >/#L32 onsubL32 o4./2/dma-bit"2orm15e=L143 >p143etho   2nterf2ce:d3e==" onsux pas airs devicDMA t3e=="   o ajax "evices,fea
3e== d3e== backs5_prefs();">e=="  Prefs5	  >/#L1412onsubL1132o4./dma-bit"2orm15e=L144 >p144etho   2  voi2 ">e_buf_  o aj_prefs();">e=="  Prefs5	  >/#L68 onsubL68 o4./2/dma-bit"2orm15e=L145 >p145etho   2     2 ajax_prefs();">e=="  Prefs5	  >/#L46 onsubL46 o4./2/dma-bit"2orm15e=L146 >p146ethod3e2="   24xporter c  o ajax_prefs();">e=="  Prefs5	  >/#L175 onsubL175 o42/dma-bit"2orm15e=L147 >p147etho   2oin i24           truct ">e_bubegin_ohe_,fea
3*">ebuf,
3e=="   o ajax_prefs();">e=="  Prefs5	  >/#L167 onsubL167 o42/dma-bit"2orm15e=L148 >p148etho   2quot;2>e_buf- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa flags)
tar pa flags)lex_prefs();">e=="  Prefs5	  >/#L21 onsubL21 o4./d/dma-bit"2orm15e=L149 >p149ethod3e2="   249_buf- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaare>inpu, pt mr_seabe po "   o ajaxprefs();">e=="  Prefs5	  >/#L21 onsubL21 o4./d/dma-bit"2orm15e=L150 >p150etho   2n str25ajax_prefs();">e=="  Prefs5	  >/#L1112onsubL1112o4./dma-bit"2orm15e=L151 >p151etho   2  voi2 (*unmap_ereneiald3e=figure oeneio ajax_pfer-user".d3eprefs();">e=="  Prefs5	  >/#L1112onsubL1112o4./dma-bit"2orm15e=L152 >p152ethod3e2="   2ted with the liskern-_seawish to make avaoe=="  Prefs5	  >/#L1842onsubL24 oo4./dma-bit"2orm15e=L153 >p153etho   2nmap_2>e_buf si15= no beexpoce.ch caes irs wisex_pirs devicensthe " mr_the liskernx_prefs();">e=="  Prefs5	  >/#L23 onsubL23 o4./d/dma-bit"2orm15e=L154 >p154etho   2ap_">2_buf, thpcohtorage.d3e==" gcesn rangedn wi iskern"   o aja.ch carangedn wi iskerprefs();">e=="  Prefs5	  >/#L23 onsubL23 o4./d/dma-bit"2orm15e=L155 >p155ethod3e2="   2ct ">e_bu_seabe po e=="   jax_.d3e=="   o ajaxevicd3e=mfla="   oj th flut iny os.e.prefs();">e=="  Prefs5	  >/#L23 onsubL23 o4./d/dma-bit"2orm15e=L156 >p156ethod3e2="   2          iskernsn w o a"evicesranged  o y-==a of storage_seabe po ( or 15= tor 1o_prefs();">e=="  Prefs5	  >/#L95 onsubL95 o4./2/dma-bit"2orm15e=L157 >p157etho6. 2hen b25        write)ake avad3d3e==="  ed  oeesn bogus patae(tsn we==" =="   o ajaxeirs deviprefs();">e=="  Prefs5	  >/#L95 onsubL95 o4./2/dma-bit"2orm15e=L158 >p158etho   2uffer2d3e=="   copyect, pataeke5.d3aro eexpocex_prefs();">e=="  Prefs5	  >/#L1732onsubL26 oo4./dma-bit"2orm15e=L159 >p159ethod3e2="   2 ajax_prefs();">e=="  Prefs5	  >/#L160 onsubL160 o42/dma-bit"2orm15e=L160 >p160etho   2fter 2he bufferTuffer-epake avaefe v tsn win o th ondied "e_prefs();">e=="  Prefs5	  >/#L1732onsubL26 oo4./dma-bit"2orm15e=L161 >p161etho   2ise5f26ajax_prefs();">e=="  Prefs5	  >/#L32 onsubL32 o4./2/dma-bit"2orm15e=L162 >p162ethod3e2="   2 ajax_2. Afea
3inmap_atbajax_prefs();">e=="  Prefs5	  >/#L29 onsubL29 o4./d/dma-bit"2orm15e=L163 >p163etho   2 ku 126ajax_prefs();">e=="  Prefs5	  >/#L194 onsubL194 o42/dma-bit"2orm15e=L164 >p164ethod3e2="   26buf, thpTo sup ">e_  ein m irself>erew ollle"n he a 15_the liskernx_  ere-b_datar, ptprefs();">e=="  Prefs5	  >/#L194 onsubL194 o42/dma-bit"2orm15e=L165 >p165etho   2nterf2ce:d3e=="acks5iad3e-usice bue t. Afea
3inma "  ein m p" buffein elig ajachunks1o_prefs();">e=="  Prefs5	  >/#L95 onsubL95 o4./2/dma-bit"2orm15e=L166 >p166etho   2  voi2 ">e_buf_PAGE_SIZEa fla.iBf cata fea
3inma "chunkas airs devicbeo ajax_usedd3e=o ajax_prefs();">e=="  Prefs5	  >/#L61 onsubL61 o4./2/dma-bit"2orm15e=L167 >p167etho   2     2         asm15. It in ="  srevir aja3e=="   o ajax_r-userwarde=figuchunkairs devicbeprefs();">e=="  Prefs5	  >/#L61 onsubL61 o4./2/dma-bit"2orm15e=L168 >p168ethod3e2="   263e=="   ffer, pt agaia.ch css5	sr inl3e-f si hfer ct d>eagcesn chunkae=="    ajax_prefs();">e=="  Prefs5	  >/#L124 onsubL124 o42/dma-bit"2orm15e=L169 >p169etho   2oin A2I  imovesn wiffer, ptpas.e.icain15.d3e== ps5	 attaDe=="  Prefs5	  >/#L124 onsubL124 o42/dma-bit"2orm15e=L170 >p170etho   2>e_bu2- ac3ops-bf catabe pinmap_at_resuchunkaagaia.prefs();">e=="  Prefs5	  >/#L124 onsubL124 o42/dma-bit"2orm15e=L171 >p171ethod3e2="   2 ajax_prefs();">e=="  Prefs5	  >/#L172 onsubL172 o42/dma-bit"2orm15e=L172 >p172etho   2 Toen2 the buffc  o ajaxx_prefs();">e=="  Prefs5	  >/#L36 onsubL36 o4./2/dma-bit"2orm15e=L173 >p173ethod3e2="   27           ct ">et ">e_buue t*">ebuf,
3e=="   p" dsig ajalongx_prefs();">e=="  Prefs5	  >/#L176 onsubL176 o42/dma-bit"2orm15e=L174 >p174etho   2nterf27">e_buf_unmap_attachx_prkffer,*">ebuf,
3e=="   p" dsig ajalong, ct ">ex_prefs();">e=="  Prefs5	  >/#L176 onsubL176 o42/dma-bit"2orm15e=L175 >p175etho   2 void27ajax_prefs();">e=="  Prefs5	  >/#L46 onsubL46 o4./2/dma-bit"2orm15e=L176 >p176ethod3e2="   276 bufferTucss5ar. ln anotomic vsubaw=="   o ase"   o ajaxs ajax_e.d3eue t o a_prefs();">e=="  Prefs5	  >/#L1842o5subL24 oo  /dma-bit"2orm15e=L177 >p177etho   2oin A2I thex reajanewfa;bil reb5	  no bfast-e ahx_ N39;, orcain15.d3e== nd3e=="   o ajax (iaprefs();">e=="  Prefs5	  >/#L124 onsubL124 o42/dma-bit"2orm15e=L178 >p178ethod3e2="   27 of all attace.g.o  )he exporter.vicb5	  we==" f_unmap_aax_prefs();">e=="  Prefs5	  >/#L193 onsubL193 o42/dma-bit"2orm15e=L179 >p179etho   2f, an2 ajax_prefs();">e=="  Prefs5	  >/#L80 onsubL80 o4./2/dma-bit"2orm15e=L180 >p180etho   2peref2ce:d3e=="   o ajaxx_prefs();">e=="  Prefs5	  >/#L36 onsubL36 o4./2/dma-bit"2orm15e=L181 >p181etho   2peref28(*unmap_">e_buf)et ">e_buue t_otomic*">ebuf,
3e=="   p" dsig ajalongx_prefs();">e=="  Prefs5	  >/#L176 onsubL176 o42/dma-bit"2orm15e=L182 >p182ethod3e2="   282>e_buf_unmap_attachx_prkffer,_otomic*">ebuf,
3e=="   p" dsig ajalong, ct ">ex_prefs();">e=="  Prefs5	  >/#L176 onsubL176 o42/dma-bit"2orm15e=L183 >p183ethoNOT2S:d3e28ajax_prefs();">e=="  Prefs5	  >/#L194 onsubL194 o42/dma-bit"2orm15e=L184 >p184etho- I2porta2="   o ajFd3e15.d3e==" ach'Tointorauber-   f_unmake t apply,nl3ke currl3e-fx_prefs();">e=="  Prefs5	  >/#L124 onsubL124 o42/dma-bit"2orm15e=L185 >p185etho   2oe at2ach-"etacsup lfer-uue t_otomic slotx_ Hraain  o15.d3e=rs on  o alirs.ld si to t most 2prefs();">e=="  Prefs5	  >/#L124 onsubL124 o42/dma-bit"2orm15e=L186 >p186etho   2onstr2ints 15= otomic 
3e=="  ue tse (15= r_resul, mayin efyagcesn    o aj" onsux x_prefs();">e=="  Prefs5	  >/#L1732onsubL26 oo4./dma-bit"2orm15e=L187 >p187etho   2lloce28ajax_prefs();">e=="  Prefs5	  >/#L138 onsubL138 o42/dma-bit"2orm15e=L188 >p188etho   2vaila2le, if po
3e=="  ue t exportsn w o a"evicesrangedspec-DMA 15=&begin_ohe_,fea
3 areprefs();">e=="  Prefs5	  >/#L61 onsubL61 o4./2/dma-bit"2orm15e=L189 >p189ethod3e2="   2ce:d3e=="un   o aj. catase rangedi	 attaPAGE_SIZEaelig aj, ue t irs devics_expor siprefs();">e=="  Prefs5	  >/#L61 onsubL61 o4./2/dma-bit"2orm15e=L190 >p190etho   2racke2s5	 of DMase par"d3e=chunks1 (15= rbeginnap_"> ine in firmayad3d3e==="  ed  obogusprefs();">e=="  Prefs5	  >/#L61 onsubL61 o4./2/dma-bit"2orm15e=L191 >p191etho   2o all2w just-inpataesn w o a"evicesranged(iajax_se par"d3e=chunksx_prefs();">e=="  Prefs5	  >/#L1732onsubL26 oo4./dma-bit"2orm15e=L192 >p192etho   2se-ca2 ajax_prefs();">e=="  Prefs5	  >/#L93 onsubL93 o4./2.d3e=="   o ajax_ ons189 onsubL189 o4./dma-bpo be  o aj. )t_seaw 15= setsn w ow ks5	 stowayport alloes irs wisex_pivics_expo&l t th=);">e=="  Prefs5	  >/#L93 onsubL93 o4./2.d3e=="t"2orm15e=L194 >p194etho- Migrefs2) of 2st operefesn p lisk-userd3ed by fe v tsn gin_ohe_,fea
3 arepr();">e=="  Prefs5	  >/#L1732onsubL26 oo4./dma-bit"2orm15e21 o4./dma-bit" orm15=tt2fd3e=29refs();">e=="  Prefs5	  >/#L46 onsubL46 o4./2/dma-bit" orm152=L96 1>pr96196o   - Toea2ast o2e att_">e.d3esonkaaasd 15= dend-hprefs(exportsnajax_too15_th,sn vportjaxs ajax);">e=="  Prefs5	  >/#L46 onsubL46 o4./2/dma-bit"2orm15e=L97 1>pr971tho   Toe-d 2ig ba2ks5	 storo ajaxro thpd ">ereffaxs ajaxtaattaDM_.d3e=="nd-he e=="ulke cas vpoorpe);">e=="  Prefs5	  >/#L46 onsubL46 o4./2/dma-bit"2orm15e=L98 1>pr981tho   theane2 ks5n2wffer-use15= a f- ac_prefs(rcax_prefser cmesn archefssedd3r();">e=="  Prefs5	  >/#L1732onsubL26 oo4./dma-bit"2orm15e=L19 >pp189e9ho   buffel2w ju 2prefs();">e=="  Prefs5	  >/#L100 onsubL100 o4./dma-3it" orm153=L1002>p10020hod3e=="   3 ajax30="   o ajaxx_prefs();">e=="  Prefs5	  >/#L36 onsubL36 o4./2/dma-3it" orm153=L1012>p10120ho   Inters3d3e i30p_">e_buf)et ">e_buue t_ovebuf,
3e=="   p" dsidprefs();">e=="  Prefs5	  >/#L71 onsubL71 o4./dma-bi3it" orm153=L1022>p10220ho      sih3 attn30f_unmap_attachx_prkffer,v">ebuf,
3e=="   p" dsi_prefs(et ">e_v o a();">e=="  Prefs5	  >/#L71 onsubL71 o4./dma-bi3i3" orm153= ons189 onsubL189 o4./d3er ca3prefs();">e=="  Prefs5	  >/#L104 onsubL104 o4./dma-3it" orm153=L1042>p10420ho      v_"3e_buf3sigul thp irsvportsn wtsnajtsn girange inl3e-f vporte_  ein i  o ajaxeirs d srefy a s);">e=="  Prefs5	  >/#L104 onsubL104 o4./dma-3i5" orm153=1 o4./dma-bit" orm15=tt3">e_b3f)(ste=="run o a"fs(evpoorpe_r-userwF     sret. AfeataattaDM_.dorter.d3e==();">e=="  Prefs5	  >/#L1732onsubL26 oo4./dma-3it" orm153=L1062>p10620ho      ve 3hes a3prefs();">e=="  Prefs5	  >/#L107 onsubL107 o4./dma-3it" orm153=L1072>p1072tho   Whepor3er ca30. F	 at  liskerusedd3);">e=="  Prefs5	  >/#L107 onsubL107 o4./dma-3i8" orm153=L98 1>pr981tho   theane3g ban30refs();">e=="  Prefs5	  >/#L1792onsubL1192o4./dma-3it" orm153=L1092>p1092tho   theom 3he li3refs() t W"   o aj=rs on  ofein elianmap_atbajax_spec-DMA 15=&begin_ohe_,fea
3 arepr();">e=="  Prefs5	  >/#L21 onsubL21 o4./d/dma-3it" orm153=L1102>p16v27hod3e=="   3 ajax31="   o a devicbeo aj5	 surr_pr i">e_buf_max (iaprefstora;bil reb5flut iny os.e. in );">e=="  Prefs5	  >/#L21 onsubL21 o4./d/dma-3it" orm153=L1112>p1112tho   Intefe3expor3er catanounp"> ine map,sn p"> s(rcax_prefs)rangedne "  counmap,sn   ue t exportsn w );">e=="  Prefs5	  >/#L21 onsubL21 o4./d/dma-3it" orm153=L1122>p1122tho      fer3user 3" ice *"erefs(firmfea
3 areprei"> aj. catas);">e=="  Prefs5	  >/#L21 onsubL21 o4./d/dma-3i3" orm153=L1132>p1132tho      de 3oot t31refs();">e=="  Prefs5	  >/#L104 onsubL104 o4./dma-3it" orm153=L1142>p114214o      fer3use==31="   o ajax_prefs();">e=="  Prefs5	  >/#L175 onsubL175 o4./dma-3it" orm153=L1152>p11521hod3e=="   3 ajax315_unmap_attachx_prkffer,irmfea
3 areprf,
3e=="   p" dsi_pr_efs();">e=="  Prefs5	  >/#L167 onsubL167 o42/dma-3it" orm153=L1162>p116216o   Intefe3expor31f_"etach(sttttttttttttttttttttttttttttt)
tar pa flags)lex_prefs();">e=="  Prefs5	  >/#L21 onsubL21 o4./d/dma-3it" orm153=L1172>p11721ho   Whe_">3_buf(31         struct ">e_buf_attachxxxxxxxxxu, pt mr_seabe po "   o ajas();">e=="  Prefs5	  >/#L176 onsubL176 o42/dma-3it" orm153=L1182>p11821hod3e=="   3 ajax3prefs();">e=="  Prefs5	  >/#L1792onsubL1192o4./dma-3it" orm153=L1192>p1192tho   Kernel3cpuce31refs();">e=="  Prefs5	  >/#L100 onsubL100 o4./dma-3it" orm153=L20 >>p1202tho- maaaaaa3aaaaa3aaaaaaDpo "  Uaxprefs(3inma "/mportS_  ein);">e=="  Prefs5	  >/#L100 onsubL100 o4./dma-3it" orm153=L21 >>p1212thod3e=="   3 ajax3prefs(aaaaaaaaaaaaaaaaa=="   o ajax_prefs();">e=="  Prefs5	  >/#L1792onsubL1112o4./dma-3it" orm153=L22 >pp1122tho    attmo3te bi32refs();">e=="  Prefs5	  >/#L93 onsubL93 o4./2.d3e=3ed3e=="  3o a23 >p223ethoim>/#L15 3nod s315.d3eBrst t3e=="   mportaajax_pre, p=="   o ajax_prefs(ignae2cmept sh_prefss();">e=="  Prefs5	  >/#L36 onsubL36 o4./2/dma-3it" orm153=L1222>p194etfitoilg _bu3 oper3f, e.g.oCPUo      srej" onsu he a 1a p"peetfi in );">e=="  Prefs5	  >/#L21 onsubL21 o4./d/dma-3it" orm153=L125 >p125ethod3e=="   32>e_b3f)="  -te_  ein he  witploadmportjaxs ajaxeffae==" ach&#s);">e=="  Prefs5	  >/#L21 onsubL21 o4./d/dma-3t" oorm153=L26 >pr26etho- isjf thp3f (ma32refs();">e=="  Prefs5	  >/#L107 onsubL107 o4./dma-3it" orm153=L27 >pr27etho- doecatat3rough3the sg1.oCPUo      srej" onsu he a 1a p"peetfi);">e=="  Prefs5	  >/#L107 onsubL107 o4./dma-3it" orm153=L28 >pr28etho- neef the3attac32refs();">e=="  Prefs5	  >/#L1792onsubL1192o4./dma-3it" orm153=L29 >pr29etho   inuffer3d3e==3   o ajaxI cmesn j" onsu he p"peetfisexportesonkin eso ajax_pdseaw 15= d the enrusedd3);">e=="  Prefs5	  >/#L107 onsubL107 o4./dma-3it"2orm153=L130 >p13v27hod3e2="   3ry.d333DMase par"d3n w oa 1a  p=="   e==" =" gcesumbnsn gcre >/#Lgs)napaatowt-...)ranaj5achx);">e=="  Prefs5	  >/#L107 onsubL107 o4./dma-3it" orm153=L131 >p131etho   2ased 3 ajax33ss5	 the ">ew ks5	 sts 15he ertesA 15ach-"enajaxprefs(okkeeps5	 teresro ajax_L107 o4);">e=="  Prefs5	  >/#L107 onsubL107 o4./dma-3it" orm153=L132 >p132etho   2>cesn35	 at3the sm15 it3e=="  idealelateda t el thead, pt sho jax_.d3e=="ajax_=" irself beexpoce.ch ca);">e=="  Prefs5	  >/#L107 onsubL107 o4./dma-3id3e=="  3=L133 >p133etho   2hat t33ajax3rter mr_sae=="jaxprefs(oke t ampors);">e=="  Prefs5	  >/#L21 onsubL21 o4./d/dma-3it"2orm153=L134 >p134ethod3e2="   3 ajax3prefs();">e=="  Prefs5	  >/#L135 onsubL135 o4./dma-3it"2orm153=L135 >p135etho   2ap_">3_buf(3 opfer-usF_buf o thp"Andrchx3e=="  IONokkeeps5	  al= toyte_  einse erte(in f39;euf owisa);">e=="  Prefs5	  >/#L107 onsubL107 o4./dma-3i" oorm153=L136 >p136ethod3e2="   3 ajax33f_"etachraain15ice bue t.  p=="   e=="  "jaxprefs(onew=fs5pas.e.a of ske t afbeos();">e=="  Prefs5	  >/#L151 onsubL151 o4./dma-3it" orm153=L137 >p137ethod3e2="   3 ajax33        ts 15hwt-ioo)raSo it3e=="  ben. c15acexpor   ein   o ajajax_pe bue faos.ax_pr);">e=="  Prefs5	  >/#L151 onsubL151 o4./dma-3it" orm153=L138 >p138etho5. 2hex f33 ban33po
3e=="  u="   d3e=="  a goodpar.d3_pref_pref5issn witerfacAndrchx"jaxprefs(s);">e=="  Prefs5	  >/#L21 onsubL21 o4./d/dma-3it" orm153=L139 >p139ethod3e2="   3 ajax3prefs();">e=="  Prefs5	  >/#L140 onsubL140 o42/dma-3it"2orm153=L140 >p140etho   2nce t3e DMA315= the cNoesA 15actjaxs ajaxe,"jaxprefs(or.d3e==sn w omportn15.d3e p=="   eas);">e=="  Prefs5	  >/#L21 onsubL21 o4./d/dma-3it"2orm153=L141 >p141etho   2he ex34ajax3prefs();">e=="  Prefs5	  >/#L32 onsubL32 o4./2/dma-3it"2orm153=L142 >p142ethod3e2="   34ser 34. Afea
3S_  ein he  witploadmportjaxs ajaxeffaeax (iapr();">e=="  Prefs5	  >/#L151 onsubL151 o4./dma-3it"2orm153=L143 >p143etho   2nterf3ce:d334refs();">e=="  Prefs5	  >/#L104 onsubL104 o4./dma-3it"2orm153=L144 >p144etho   2  voi3 ">e_3uf_  o ajSce bue t. t juscpucesn to t o eae=="  srefer " xporterrefs"etr.d3e=dreaw );">e=="  Prefs5	  >/#L104 onsubL104 o4./dma-3it"2orm153=L145 >p145etho   2     3 ajax3         rface.d3eefs(oneicesran chunkaetr.d3xpocecmprefs(o jaxhesul, mayjaxs ajaxe);">e=="  Prefs5	  >/#L104 onsubL104 o4./dma-3i" oorm153=L146 >p146ethod3e2="   34xpor3er c  o a of sto=d sig .o p=="   o ajax_prefs(iasa of ston >/ve o ajax_prefs( ">ereffe);">e=="  Prefs5	  >/#L104 onsubL104 o4./dma-3it" orm153=L147 >p147etho   2oin i34    3      truesA 15ach-"etr.d3e=drmprefs(f_unre rface.d3eefs(oe=chesra x_pro eexpocOpenGL();">e=="  Prefs5	  >/#L21 onsubL21 o4./d/dma-3it"2orm153=L148 >p148etho   2quot;3>e_bu3- aaaaaaaXd3e==" ain15estha aarefhuwayathrorps5	 atbajaxm t. h'orage_seabeo aja();">e=="  Prefs5	  >/#L95 onsubL95 o4./2/dma-3it"2orm153=L149 >p149ethod3e2="   349_bu3- aaaaaaamportaxporter.daain15dagesthas);">e=="  Prefs5	  >/#L21 onsubL21 o4./d/dma-3it"2orm153=L150 >p150etho   2n str35ajax3prefs();">e=="  Prefs5	  >/#L1112onsubL1112o4./dma-3it"2orm153=L151 >p151etho   2  voi3 (*un3ap_ereneialf_at=fs  o a i  o ajjaver, i p=="   jaxs ajaxeffd3ed by_pdpo "  tbajax);">e=="  Prefs5	  >/#L1112onsubL1112o4./dma-3it"2orm153=L152 >p152ethod3e2="   3ted w3th the liinihunksmportj#39;Toinat3e=="  prefs(. Acecrvee t_osonkaoanst to itploa);">e=="  Prefs5	  >/#L1112onsubL1112o4./dma-3it"2orm153=L153 >p153etho   2nmap_3>e_bu3 si15= noecmprefs(staatwd3ed byno5estha  ses(stt.  o.okerarf112ouse ertbaurrl3syncloa);">e=="  Prefs5	  >/#L1112onsubL1112o4./dma-3it"2orm153=L154 >p154etho   2ap_">3_buf,3thpcohtorupa of s"allletely,d synchronousej" onsu he n15.d3e e_buf_rs.defs() ooa);">e=="  Prefs5	  >/#L1112onsubL1112o4./dma-3it"2orm153=L155 >p155ethod3e2="   3ct ">3_bu_seabesA 15actcax_prefseav ts"  cin eraSo hop="ulke 5= the fgoodpenprefgs)lnax);">e=="  Prefs5	  >/#L46 onsubL46 o4./2/dma-3it"2orm153=L156 >p156ethod3e2="   3     3    iskerndn he a xs ajaxeft. a xs cep-by-plts"   all"athe liptxtaatotadprs.d3d3e);">e=="  Prefs5	  >/#L46 onsubL46 o4./2/dma-3it" orm153=L157 >p157etho6. 2hen b35    3   write)lnarpref o ajjl t txusefqui=g.oprefs);">e=="  Prefs5	  >/#L21 onsubL21 o4./d/dma-3it"2orm153=L158 >p158etho   2uffer3d3e==35refs();">e=="  Prefs5	  >/#L1792onsubL1192o4./dma-3it"2orm153=L159 >p159ethod3e2="   3 ajax35  o ajaxI x_prefs();">e=="  Prefs5	  >/#L175 onsubL175 o4./dma-3it"2orm153=L160 >p160etho   2fter 3he bu3ferTuffer t ">e_bubegin_mebuf,
3e=="   p" dsig ,
3e=="vm_arpr_,
3e=="s();">e=="  Prefs5	  >/#L145 onsubL145 o4./dma-3it"2orm153=L161 >p161etho   2ise5f36ajax36p_">e_buf)eeeeeeeeeeeeeeeeeeajalongx_prefs();">e=="  Prefs5	  >/#L176 onsubL176 o42/dma-3it"2orm153=L162 >p162ethod3e2="   3 ajax3prefs();">e=="  Prefs5	  >/#L163 onsubL163 o4./dma-3it"2orm153=L163 >p163etho   2 ku 136ajax3taches ir rangedetr.d3xpocecmprefs(or.d3e==f5= any- acsA 15ac-purpks5	mportsn wtxpore );">e=="  Prefs5	  >/#L104 onsubL104 o4./dma-3it"2orm153=L164 >p164ethod3e2="   36buf,36hpcohtorupaanmap_at_renajaxprefs(,tsn wat_rdo_mebua of sdach(), if pefs(flut  eqfer-u);">e=="  Prefs5	  >/#L104 onsubL104 o4./dma-3it"2orm153=L165 >p165etho   2nterf3ce:d33=="acks5iachiev_seaw 1irs.d9; irself from s);">e=="  Prefs5	  >/#L21 onsubL21 o4./d/dma-3it"2orm153=L166 >p166etho   2  voi3 ">e_36refs();">e=="  Prefs5	  >/#L107 onsubL107 o4./dma-3it"2orm153=L167 >p167etho   2     3     36. F	 at Irter.d3eesn to reqs5issn w (iapr();">e=="  Prefs5	  >/#L151 onsubL151 o4./dma-3it"2orm153=L168 >p168ethod3e2="   363e==3prefs();">e=="  Prefs5	  >/#L169 onsubL169 o4./dma-3it"2orm153=L169 >p169etho   2oin A3I  im3vesn wiffBecah p=="   o ajaxs5	 at dage"   os)lexdend-angeiraurfkin e,5.d3e p=="  );">e=="  Prefs5	  >/#L169 onsubL169 o4./dma-3it"2orm153=L170 >p170etho   2>e_bu3- ac33ps-bf catcthp"checksf_unain15n vpoffd3eoo buei iskerrerew olsuchnmap_at_neialx);">e=="  Prefs5	  >/#L46 onsubL46 o4./2/dma-3it"2orm153=L171 >p171ethod3e2="   3 ajax37p_">e_buax (iapreh o15.ttaDe=="  Prefs5	  >/#L21 onsubL21 o4./d/dma-3it"2orm153=L172 >p172etho   2 Toen3 the 37refs();">e=="  Prefs5	  >/#L163 onsubL163 o4./dma-3it"2orm153=L173 >p173ethod3e2="   37    3      ct Becah witploadetr.d3xpocecmprefs(sy fe v pne "nkaage.d3e==map_at_nefs();">e=="  Prefs5	  >/#L1112onsubL1112o4./dma-3it"2orm153=L174 >p174etho   2nterf37">e_3uf_unmap_jaxprefs(,to ajaxeirs deviprefs(ore rupaanage.d3e==map_at_se rangat3e=="  po );">e=="  Prefs5	  >/#L104 onsubL104 o4./dma-3it"2orm153=L175 >p175etho   2 void37ajax3f_pur(strter.d3e=rs devicDMA t3frr aage.d3ecy"   manfer-usaatotat_rdowniptxsf_unr);">e=="  Prefs5	  >/#L151 onsubL151 o4./dma-3it"2orm153=L176 >p176ethod3e2="   376 bu3ferTucss5leavatbajax_  srdomept ll"aly os.e.  efs( alv ts"  cin era )t_seaw 19;Toint);">e=="  Prefs5	  >/#L151 onsubL151 o4./dma-3it"2orm153=L177 >p177etho   2oin A3I the3 reajanewt el theafs(s_L107#3esul, mayan a i oe.ith o15.o ajaxeirs deviprefs(orepljax);">e=="  Prefs5	  >/#L46 onsubL46 o4./2/dma-3it"2orm153=L178 >p178ethod3e2="   37 of 3ll attace.g.ot el theafs(ce.chbegin_vpo if pvm_efs(fluth it3e=="  ownirorttxtaatotadprffe);">e=="  Prefs5	  >/#L104 onsubL104 o4./dma-3it"2orm153=L179 >p179etho   2f, an3 ajax3_c of thp ajarpd ">ereff  becah  sre onsuxusd 15= d aj.rlyat_renoe.3e=="   o ajax_refs();">e=="  Prefs5	  >/#L31 onsubL31 o4./2ddma-3it"2orm153=L180 >p180etho   2peref3ce:d33=="   o aissnvpoftrbeexpoc(in fh o15.ttxttrbeexpocattaatotadprfin efluth);">e=="  Prefs5	  >/#L31 onsubL31 o4./2ddma-3it"2orm153=L181 >p181etho   2peref38(*un38r catanounomicmap_at__spec-s();">e=="  Prefs5	  >/#L1732onsubL26 oo4./dma-3it"2orm153=L182 >p182ethod3e2="   382>e_3prefs();">e=="  Prefs5	  >/#L183 onsubL183 o4./dma-3it"2orm153=L183 >p183ethoNOT2S:d3e38ajax38aches ir rangedabsm15aatotadprfdand {  o ajprefs(jax_too1 vicnsthagin_certfs();">e=="  Prefs5	  >/#L124 onsubL124 o42/dma-3it"2orm153=L184 >p184etho- I2porta3="   3 ajFd3e15scen112o3e="eo jaxex to 3 p=="    of sto thp" vilieit5flut itrbeexpocsut m();">e=="  Prefs5	  >/#L31 onsubL31 o4./2ddma-3it"2orm153=L185 >p185etho   2oe at3ach-"3tacsup lfissne.d3eefs(omap_at_neiBut o ajjaver, iat=fs  o a id3ed byke t amporffe);">e=="  Prefs5	  >/#L104 onsubL104 o4./dma-3it"2orm153=L186 >p186etho   2onstr3ints 35= otomic owaypoa_ Hrw deprefg ,oosonkathof c15 o1i(s_L1ttaDM_.deferptaefs();">e=="  Prefs5	  >/#L189 onsubL189 o4./dma-3it"2orm153=L187 >p187etho   2lloce38ajax3prefs();">e=="  Prefs5	  >/#L138 onsubL138 o42/dma-3it"2orm153=L188 >p188etho   2vaila3le, i3 po
3e=="Ew (iapr(dubsytaatotrdownimap_at_ne(irs.d3e=rpreons)o alirsnotrdo.d3e);">e=="  Prefs5	  >/#L138 onsubL138 o42/dma-3it"2orm153=L189 >p189ethod3e2="   3ce:d33=="un   osynchronizesn tolv ts"  cin ea of s"allletely,d e_buf_r "ev tsn ();">e=="  Prefs5	  >/#L189 onsubL189 o4./dma-3it"2orm153=L190 >p190etho   2racke3s5	 o3 DMase paSynchronizesn toiajax_(iahog ajaoiasue=" lje89 o4rself beexpoce.ch caesran);">e=="  Prefs5	  >/#L189 onsubL189 o4./dma-3it"2orm153=L191 >p191etho   2o all3w jus3-inpataesporter.in fh o15.aattaDMA hebe ts 15h="    p=="   jpt sh ">ereff   viliet-u);">e=="  Prefs5	  >/#L104 onsubL104 o4./dma-3it"2orm153=L192 >p192etho   2se-ca3 ajax3="   o ajs5	 /#Le fh re becahmesn jeops(ceexm t. w  os)onkiertbaurrl3u be,ayad3i );">e=="  Prefs5	  >/#L169 onsubL169 o4./dma-3"   o aja3_ ons189 onsubL189 o4./d3a-bpo3be  o aj.rage_seabe w (iapr(sts 15he erterage_seabke co ajax_L107 o4tsnajtsn gi();">e=="  Prefs5	  >/#L124 onsubL124 o42/dma-3"t"2orm153=L194 >p194etho- Migrefs3) of 3st operefin allow o4twaypodepe"   waupoo4rselfax (iaprefsf"jaxprefs(or flapodepe"   w);">e=="  Prefs5	  >/#L124 onsubL124 o42/dma-3"t"2orm15321 o4./dma-bit" orm15=tt3fd3e=3"   o ajaupoo 5= themilieit5synchronizesn ts();">e=="  Prefs5	  >/#L1732onsubL26 oo4./dma-3it" orm153=L96 1>pr96196o   - Toea3ast o39refs();">e=="  Prefs5	  >/#L107 onsubL107 o4./dma-3it"2orm153=L97 1>pr971tho   Toe-d 3ig ba3ks5	 sMiscellaneouse reqs);">e=="  Prefs5	  >/#L107 onsubL107 o4./dma-3it"2orm153=L98 1>pr981tho   theane3 ks5n3wffer-=="   o ajax_prefs();">e=="  Prefs5	  >/#L1792onsubL1112o4./dma-3it"2orm153=L19 >pp189e9ho   buffel3w ju 3prefs();">e=="  Prefs5	  >/#L100 onsubL100 o4./dma-sedd3);">e==/axpred1sig enma  onsubL189 o4./dma-3it"2orm153=Lb3d=L112o4./dma-3it"2o53=Lb3d=Lrm15isubL10#L107 l3.  osynchronizesn5 Prefs5	  _e>/#L100 onsubL189 o4./dma-3it"2o4m153=41012>p10ao ainiMA to=dDMA_SHARED_BUFFERreleas(*un3aie bucecm   o Kconfigs"allletely,d e_buf_r "ev tsn ();">e=="  Prefs54  >/#L71 4nsubL71 o4./dma-bi3it" o4m153=4082 >p182ethod3e2="   382>e_3prefs();">e=="  Prefs54  >/#L71 4nsubL71 o4./dma-bi3i3" o4m153=4ons189-ethoord="   jre >/it3eethkse15=execterf37FD_CLOEXECss5ag53=Lb3becsA 15ac-purpks5	mportsn wtxpore );">e=="  Prefs54  >/#L1044onsubL104 o4./dma-3it" o4m153=41042>p10ely,d stheafdescripasu. be ts 15hataeer caa2="   3cteethkm t. w89 o4rself beexpoce.ch caesran);">e=="  Prefs54  >/#L1044onsubL104 o4./dma-3i5" o4m153=4 o4./dma catad  icsAne.   who c1 "alle3-inp    ;bil reqly=execreleadntorai   all9 o4rself beexpoce.ch caesran);">e=="  Prefs54 6>/#L1044onsubL26 oo4./dma-3it" o4m153=41062>p10ernel cpuc im3ves, via f_unmthkexpod,h re ax_1."tjus3-inpl= toyte_  einse erte(in f39;euf owisa);">e=="  Prefs54  >/#L1074onsubL107 o4./dma-3it" o4m153=41072>p10ataespon emitt mulished"allletely,d e_buf_r "ev tsn ();">e=="  Prefs54 8>/#L1074onsubL107 o4./dma-3it"2o4m153=498 1>pr981tho   theane3g ban30refs();">e=="  Prefs54  >/#L1794onsubL1192o4./dma-3it" o4m153=41092>p10ethoprof cmenajaxpoajax_(15hvia 2onMigref stc w ()of thp"_bu33d3eoajax  ein i  o ajaxeirs d srefy a s);">e=="  Prefs54  >/#L21 4nsubL21 o4./d/dma-3it" o4m153=41102>p16etho  cDMA oeesn bogo thp"  p==n A2Istfisexpots 15hinhabe w (   oew ks89 o4rself beexpoce.ch caesran);">e=="  Prefs54  >/#L21 4nsubL21 o4./d/dma-3it" o4m153=41112>p11m="ui-"  sadedntor[3].10ethohroniz15hma e==or=" oeesncesn tlibface. aja9 o4rself beexpoce.ch caesran);">e=="  Prefs54  >/#L71 4nsubL21 o4./d/dma-3it" o4m153=41122>p11etho"  /  p=="n allowtheafdescripasuaattaoNOT2orai   all rbegataeake ava9 o4rself beexpoce.ch caesran);">e=="  Prefs54  >/#L71 4nsubL21 o4./d/dma-3i3" o4m153=41132>p11awthe3dma-3itf(3 opfe"allletely,d e_buf_r "ev tsn ();">e=="  Prefs54  >/#L1044onsubL104 o4./dma-3it" o4m153=4134 >p134ethod3e2="   3 ajax3prefs();">e=="  Prefs54  >/#L1754onsubL175 o4./dma-3it" o4m153=41152>p11 gcre >/xpots prof cm5= the cNoes3=Lb3d=Lr 2o atbajusefs5	 fO_CLOEXEC134ethod3e2="   3 ajax3prefs();">e=="  Prefs54 6>/#L1044onsubL167 o42/dma-3it" o4m153=41162>p11s5ag5becsA  oeesn bogfs(or.d3e=thp"  p==n .10Stwd3ed_bufedetr.do aals &l t th=="   o ajax_prefs();">e=="  Prefs54  >/#L21 4nsubL21 o4./d/dma-3it" o4m153=41172>p11llow o4twatolv  noecmort  p==n:d33==r.d3e=t3=Lb3edetr.d 2o atbajulA 15ac-purpks5	mportsn wtxpore );">e=="  Prefs54  >/#L1764onsubL176 o42/dma-3it" o4m153=4188 >p18n15ice bue t.troicsAt BracketO_CLOEXECss5ag5p176l attaajax33er 3hfd(5= themilieit5synchronizesn ts();">e=="  Prefs54  >/#L1794onsubL1192o4./dma-3it" o4m153=41192>p1192tho   Kernel3cpuce31refs();">e=="  Prefs54  >/#L1004onsubL100 o4./dma-3it" o4m153=420 >>p1-bit"nsul, mayan a i oe.idevicDMA at  lilut  le==g.ll3w j37ajax3f_pur(1192tho   Kernel3cpuce31refs();">e=="  Prefs54  >/#L21 4onsubL100 o4./dma-3it" o4m153=42112>p11trter.d3e=r(dumn wtsnajtsn,f cata fea
3inmaoim>/#L1zhod3"   o acy"  ho   refsf"jaxprefs(or flapodepe"   w);">e=="  Prefs54  >/#L1794onsubL1112o4./dma-3it" o4m153=42202>p16etx_(iahog ajaoiasue="ly owtlinuxumnata feaaubegin_m 15= d aj.rlyfs(oocia t apply,nl3ke currl3e-fx_prefs();">e=="  Prefs54  >/#L93 4nsubL93 o4./2.d3e=3ed3e=4"  3o42132>p11fea
3e " begin_m 37 of 3ll attace.g.ot el theafstaatwfisexfea
3e " func all9 o4rself beexpoce.ch caesran);">e=="  Prefs54  >/#L36 4nsubL36 o4./2/dma-3it" o4m153=42042>p10etho   2peref38(*uncsup lfissd3e2="   a-3it"2o5raainhog seakeryhe sm15 it39 o4rself beexpoce.ch caesran);">e=="  Prefs54  >/#L1754nsubL21 o4./d/dma-3it" o4m153=4125 >p12fea
3e " t el_ 37 of gin_m 37 A2I  im3"  e sm15 A3I the3 reajanew 37 = themilieit5synchronizesn ts();">e=="  Prefs54  >/#L21 4nsubL21 o4./d/dma-3t" oo4m153=426 >pr26etho- isjf thp3f (ma32refs();">e=="  Prefs54  >/#L1074onsubL107 o4./dma-3it" o4m153=427 >pr27er-uuenma  onsub>e_buax sAtupun3aie o
3e 37 od33== 15= d aj.rly)fs(oocia all9 o4rself beexpoce.ch caesran);">e=="  Prefs54  >/#L1764onsubL107 o4./dma-3it" o4m153=428 >pr28bycsAt Bracce.g.ot el theaf33== 1er cBracce.g.ot el pgoff (*un3ape sm15 imn w9 o4rself beexpoce.ch caesran);">e=="  Prefs54  >/#L1794onsubL1192o4./dma-3it" o4m153=429 >pr29d3e2="  .etho reajfein echo   I3     cme  noecmo   Intefe exp3-inpc of th9 o4rself beexpoce.ch caesran);">e=="  Prefs54  >/#L1074onsubL107 o4./dma-3it"2o4m153=4130 >p13sirseltheaf3Andrchxedetr.do aa  cmed33==sA  el pgoff = 0).8etho   2vaeragtmanfer-usaatotat_rdowniptxsf_unr);">e=="  Prefs54  >/#L1074onsubL107 o4./dma-3it" o4m153=4131 >p13zhodcy"  aa    2oid3e2="   orbuceot oper  iskerf3e " begin_m 15= d aj.rlyat_renoe.3e=="   o ajax_refs();">e=="  Prefs54  >/#L1074onsubL107 o4./dma-3it" o4m153=4132 >p13s(oocia t 2fea
3e "ie o
3e 37 = themilieit5synchronizesn ts();">e=="  Prefs54  >/#L1074onsubL107 o4./dma-3id3e=4"  3=4133 >p133etho   2hat t23ajax_prefs();">e=="  Prefs54  >/#L21 4nsubL21 o4./d/dma-3it"2o4m153=4134 >pResg_taatax_prefs(ignae2cmept sh_prefss();">e=="  Prefs54  >/#L1354onsubL135 o4./dma-3it"2o4m153=4135 >p[1] ferTuffer t ">_opin he nclude/linuxrefss();.rbeexpocattaatotadprfin efluth);">e=="  Prefs54  >/#L1074onsubL107 o4./dma-3i" oo4m153=4136 >p[2] Alce t3e DMA312etho   2se2S:d3e*"erefsn he nclude/linuxrefss();.rbeexpocattaatotadprfin efluth);">e=="  Prefs54  >/#L1074onsubL151 o4./dma-3it" o4m153=4137 >p[3] https://lwn.net/Awatcles/236486/beexpocattaatotadprfin efluth);">e=="  Prefs54  >/#L1764onsubL151 o4./dma-3it" o4m153=4138 >p


ethoorigiSyncLXR softwthe3u_seabeeexpocatthttp:// 3ctr(duncnet/edein15n/lx ">LXR community8 >p,xpots prfdritadprl"_bu3all u_seexpocattmailto:lx @linux.no">lx @linux.no8 >p.
lx .linux.no ajdain "eas u_seexpocatthttp://www.ll pill-linede.no">Rl pill Linede AS8 >p,xedetr.ddevicLinuxu t. lcBraco 2n ea of s ahered "p="ul 1995.