blob: 77e254ceef3b8f06e6c4356e4022062a9322151d [file] [log] [blame]
Luis Farias2de97522022-03-17 20:01:53 -07001.. Copyright (c) 2012 Intel
Luis Farias9d66fca2020-05-28 19:01:58 -07002..
3.. Licensed under the Apache License, Version 2.0 (the "License");
4.. you may not use this file except in compliance with the License.
5.. You may obtain a copy of the License at
6..
7.. http://www.apache.org/licenses/LICENSE-2.0
8..
9.. Unless required by applicable law or agreed to in writing, software
10.. distributed under the License is distributed on an "AS IS" BASIS,
11.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12.. See the License for the specific language governing permissions and
13.. limitations under the License.
14
15.. |br| raw:: html
16
17 <br />
18
19Wls Lib Overview
20================
21
Luis Farias70d9d922020-08-11 16:05:37 -070022The Wls_lib is a Wireless Service library that supports shared memory and buffer management used by applications
23implementing a gNb or eNb.
24This library uses DPDK, libhugetlbfs and pthreads to provide memcpy less data exchange between an L2 application,
Luis Farias9d66fca2020-05-28 19:01:58 -070025API Translator Module and a L1 application by sharing the same memory zone from the DPDK perspective.
26
27Project Resources
28-----------------
29
30The source code is avalable from the Linux Foundation Gerrit server:
31 `<https://gerrit.o-ran-sc.org/r/gitweb?p=o-du%2Fphy.git;a=summary>`_
32
33The build (CI) jobs will be in the Linux Foundation Jenkins server:
34 `<https://jenkins.o-ran-sc.org>`_
35
36Issues are tracked in the Linux Foundation Jira server:
37 `<https://jira.o-ran-sc.org/secure/Dashboard.jspa>`_
38
39Project information is available in the Linux Foundation Wiki:
40 `<https://wiki.o-ran-sc.org>`_
41
42
43Library Functions
44-----------------
45
46* **WLS_Open() and WLS_Open_Dual()** that open a single or dual wls instance interface and registers the instance with the kernel space driver.
47
48* **WLS_Close(), WLS_Close1()** closes the wls instance and deregisters it from the kernel space driver.
49
50* **WLS_Ready(), WLS_Ready1()** checks state of remote peer of WLS interface and returns 1 if remote peer is available.
51
52* **WLS_Alloc()** allocates a memory block for data exchange shared memory. This block uses hugepages.
53
54* **WLS_Free()** frees memory block for data exchange shared memory.
55
56* **WLS_Put(), WLS_Put1()** puts memory block (or group of blocks) allocated from WLS memory into the interface for transfer to remote peer.
57
58* **WLS_Check(), WLS_Check1()** checks if there are memory blocks with data from remote peer and returns number of blocks available for "get" operation.
59
60* **WLS_Get(), WLS_Get1()** gets memory block from interface received from remote peer. Function is a non-blocking operation and returns NULL if no blocks available.
61
62* **WLS_Wait(), WLS_Wait1()** waits for new memory block from remote peer. This Function is a blocking call and returns number of blocks received.
63
64* **WLS_WakeUp(), WLS_WakeUp1()** performs "wakeup" notification to remote peer to unblock "wait" operations pending.
65
66* **WLS_Get(), WLS_Get1()** gets a memory block from the interface received from remote peer. This Function is blocking operation and waits till next memory block from remote peer.
67
68* **WLS_VA2PA()** converts virtual address (VA) to physical address (PA).
69
70* **WLS_PA2VA()** converts physical address (PA) to virtual address (VA).
71
72* **WLS_EnqueueBlock(), WLS_EnqueueBlock1()** This function is used by a master or secondary master to provide memory blocks to a slave for next slave to master (sec master) transfer of data.
73
74* **WLS_NumBlocks()** returns number of current available blocks provided by master for a new transfer of data from the slave.
75
Luis Farias70d9d922020-08-11 16:05:37 -070076The **_1()** functions are only needed when using the WLS_Open_Dual().
77
78The source code and documentation will be updated in the next release to use inclusive engineering terms.