• Home
  • Raw
  • Download

Lines Matching +full:user +full:- +full:level

10 and data formats. A user space library provides high level services
11 and translates these into low level commands which are then passed
17 code sufficient to write user or kernel applications that use DAX
20 The user library is open source and available at:
25 the accompanying document, dax-hv-api.txt, which is a plain text
27 Specification" version 3.0.20+15, dated 2017-09-25.
30 High Level Overview
51 done at the user level, which results in almost zero latency between
60 architecture, as there is an additional level of memory virtualization
61 present. This intermediate level is called "real" memory, and the
86 made accessible via mmap(), and are read-only for the application.
109 equal to the number of bytes given in the call. Otherwise -1 is
113 -----------
118 further status information is returned, so the user should not
122 --------
129 --------
138 ---------------------------------------------
143 pwrite() system call. If -1 is returned then errno is set to indicate
147 successful and there is no further status needed; hence, the user
155 ----
159 user process, and the mmap call must not specify PROT_WRITE.
176 (without a context switch or kernel to user transition) after a
184 - open dax device
185 - call mmap() to get the completion area address
186 - allocate a CCB and fill in the opcode, flags, parameters, addresses, etc.
187 - submit CCB via write() or pwrite()
188 - go into a loop executing monitored load + monitored wait and
191 - perform a CCB_DEQUEUE
192 - call munmap() for completion area
193 - close the dax device
213 limited to 8k. If a user's buffer is larger than 8k, then a larger
217 Huge pages. A user may allocate huge pages using standard interfaces.
229 higher level libraries.
233 -------------
234 A CCB is an array of 8 64-bit words. Several of these words provide
250 each of these fields, and see dax-hv-api.txt for a complete description
254 - CCB version, which must be consistent with hardware version
255 - Opcode, which must be one of the documented allowable commands
256 - Address types, which must be set to "virtual" for all the addresses
257 given by the user, thereby ensuring that the application can
264 The DAX is accessible to both user and kernel code. The kernel code
265 can make hypercalls directly while the user code must use wrappers
268 example of user code is given now, with kernel code afterwards.
290 64-byte aligned and its size must be a multiple of 64 bytes because
307 ccb->control = /* Table 36.1, CCB Header Format */
318 ccb->completion = 0; /* Completion area address, to be filled in by driver */
320 ccb->input0 = (unsigned long) input; /* primary input address */
322 ccb->access = /* Section 36.2.1.2, Data Access Control */
324 | (nbits - 1); /* number of bits in primary input stream, minus 1 */
326 ccb->input1 = 0; /* secondary input address, unused */
328 ccb->op_data = 0; /* scan criteria (value to be matched) */
330 ccb->output = (unsigned long) output; /* output address */
332 ccb->table = 0; /* table address, unused */
364 All other non-zero values indicate error conditions which are
386 --------------
389 of the completion area. Unlike user applications which mmap the
394 ccb->control |= /* Table 36.1, CCB Header Format */
397 ccb->completion = (unsigned long) completion_area; /* Completion area address */
418 that in user land::
444 .. include:: dax-hv-api.txt