Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zzha zzha
OpenXG-RAN
Commits
ee60fbc2
Commit
ee60fbc2
authored
Sep 06, 2021
by
Ting-An-Lin
Committed by
rajeshwari.p
Dec 15, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add targets/ARCH/ETHERNET/oran besides benetel
parent
e13e01c0
Changes
14
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
1486 additions
and
0 deletions
+1486
-0
targets/ARCH/ETHERNET/oran/4g/low_dpdk_oran.c
targets/ARCH/ETHERNET/oran/4g/low_dpdk_oran.c
+99
-0
targets/ARCH/ETHERNET/oran/4g/low_oran.c
targets/ARCH/ETHERNET/oran/4g/low_oran.c
+41
-0
targets/ARCH/ETHERNET/oran/4g/low_oran.h
targets/ARCH/ETHERNET/oran/4g/low_oran.h
+39
-0
targets/ARCH/ETHERNET/oran/4g/oran.c
targets/ARCH/ETHERNET/oran/4g/oran.c
+410
-0
targets/ARCH/ETHERNET/oran/4g/oran.h
targets/ARCH/ETHERNET/oran/4g/oran.h
+19
-0
targets/ARCH/ETHERNET/oran/4g/shared_buffers.c
targets/ARCH/ETHERNET/oran/4g/shared_buffers.c
+81
-0
targets/ARCH/ETHERNET/oran/4g/shared_buffers.h
targets/ARCH/ETHERNET/oran/4g/shared_buffers.h
+51
-0
targets/ARCH/ETHERNET/oran/5g/low_dpdk_oran.c
targets/ARCH/ETHERNET/oran/5g/low_dpdk_oran.c
+99
-0
targets/ARCH/ETHERNET/oran/5g/low_oran.c
targets/ARCH/ETHERNET/oran/5g/low_oran.c
+41
-0
targets/ARCH/ETHERNET/oran/5g/low_oran.h
targets/ARCH/ETHERNET/oran/5g/low_oran.h
+39
-0
targets/ARCH/ETHERNET/oran/5g/oran.c
targets/ARCH/ETHERNET/oran/5g/oran.c
+402
-0
targets/ARCH/ETHERNET/oran/5g/oran.h
targets/ARCH/ETHERNET/oran/5g/oran.h
+19
-0
targets/ARCH/ETHERNET/oran/5g/shared_buffers.c
targets/ARCH/ETHERNET/oran/5g/shared_buffers.c
+85
-0
targets/ARCH/ETHERNET/oran/5g/shared_buffers.h
targets/ARCH/ETHERNET/oran/5g/shared_buffers.h
+61
-0
No files found.
targets/ARCH/ETHERNET/oran/4g/low_dpdk_oran.c
0 → 100644
View file @
ee60fbc2
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#define _GNU_SOURCE
#include <sched.h>
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include "low_oran.h"
int
oran_main
(
int
argc
,
char
**
argv
,
oran_t
*
);
void
*
dpdk_thread
(
void
*
bs
)
{
char
*
v
[]
=
{
"softmodem"
,
"config_file_o_du.dat"
,
"0000:81:0e.0"
,
"0000:81:0e.1"
};
oran_main
(
4
,
v
,
bs
);
exit
(
1
);
return
0
;
}
void
*
oran_start_dpdk
(
char
*
ifname
,
shared_buffers
*
buffers
)
{
oran_t
*
bs
;
bs
=
calloc
(
1
,
sizeof
(
oran_t
));
if
(
bs
==
NULL
)
{
printf
(
"%s: out of memory
\n
"
,
__FUNCTION__
);
exit
(
1
);
}
bs
->
buffers
=
buffers
;
pthread_attr_t
attr
;
if
(
pthread_attr_init
(
&
attr
)
!=
0
)
{
printf
(
"pthread_attr_init failed
\n
"
);
exit
(
1
);
}
cpu_set_t
cpuset
;
CPU_ZERO
(
&
cpuset
);
CPU_SET
(
10
,
&
cpuset
);
if
(
pthread_attr_setaffinity_np
(
&
attr
,
sizeof
(
cpu_set_t
),
&
cpuset
)
!=
0
)
{
printf
(
"pthread_attr_setaffinity_np failed
\n
"
);
exit
(
1
);
}
if
(
pthread_attr_setschedpolicy
(
&
attr
,
SCHED_FIFO
)
!=
0
)
{
printf
(
"pthread_attr_setschedpolicy failed
\n
"
);
exit
(
1
);
}
struct
sched_param
params
;
params
.
sched_priority
=
sched_get_priority_max
(
SCHED_FIFO
);
if
(
sched_get_priority_max
(
SCHED_FIFO
)
==
-
1
)
{
printf
(
"sched_get_priority_max failed
\n
"
);
exit
(
1
);
}
if
(
pthread_attr_setschedparam
(
&
attr
,
&
params
)
!=
0
)
{
printf
(
"pthread_setschedparam failed
\n
"
);
exit
(
1
);
}
pthread_t
t
;
if
(
pthread_create
(
&
t
,
&
attr
,
dpdk_thread
,
bs
)
!=
0
)
{
printf
(
"%s: thread creation failed
\n
"
,
__FUNCTION__
);
exit
(
1
);
}
if
(
pthread_attr_destroy
(
&
attr
)
!=
0
)
{
printf
(
"pthread_attr_init failed
\n
"
);
exit
(
1
);
}
return
bs
;
}
targets/ARCH/ETHERNET/oran/4g/low_oran.c
0 → 100644
View file @
ee60fbc2
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include "low_oran.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void
*
oran_start_dpdk
(
char
*
ifname
,
shared_buffers
*
buffers
);
void
*
oran_start
(
char
*
ifname
,
shared_buffers
*
buffers
)
{
printf
(
"oran_start
\n
"
);
if
(
!
strcmp
(
ifname
,
"dpdk"
))
return
oran_start_dpdk
(
ifname
,
buffers
);
else
return
NULL
;
}
targets/ARCH/ETHERNET/oran/4g/low_oran.h
0 → 100644
View file @
ee60fbc2
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include "shared_buffers.h"
void
*
benetel_start
(
char
*
ifname
,
shared_buffers
*
buffers
);
typedef
struct
{
shared_buffers
*
buffers
;
int
next_subframe
;
int
next_symbol
;
int
expected_oran_frame
;
}
oran_t
;
targets/ARCH/ETHERNET/oran/4g/oran.c
0 → 100644
View file @
ee60fbc2
This diff is collapsed.
Click to expand it.
targets/ARCH/ETHERNET/oran/4g/oran.h
0 → 100644
View file @
ee60fbc2
void
oran_fh_if4p5_south_out
(
RU_t
*
ru
,
int
frame
,
int
subframe
,
uint64_t
timestamp
);
void
oran_fh_if4p5_south_in
(
RU_t
*
ru
,
int
*
frame
,
int
*
subframe
);
typedef
struct
{
eth_state_t
e
;
shared_buffers
buffers
;
rru_config_msg_type_t
last_msg
;
int
capabilities_sent
;
void
*
oran_priv
;
}
oran_eth_state_t
;
targets/ARCH/ETHERNET/oran/4g/shared_buffers.c
0 → 100644
View file @
ee60fbc2
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include "shared_buffers.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void
init_buffers
(
shared_buffers
*
s
)
{
int
subframe
;
memset
(
s
,
0
,
sizeof
(
*
s
));
for
(
subframe
=
0
;
subframe
<
10
;
subframe
++
)
{
if
(
pthread_mutex_init
(
&
s
->
m
[
subframe
],
NULL
)
!=
0
||
pthread_cond_init
(
&
s
->
c
[
subframe
],
NULL
)
!=
0
)
{
printf
(
"%s: error initializing mutex/cond
\n
"
,
__FUNCTION__
);
exit
(
1
);
}
}
/* in FDD the eNB's first transmitted DL subframe is 4 but the device
* needs to have subframes 1, 2 and 3 ready. Let's pretend there are ready.
*/
s
->
dl_busy
[
1
]
=
0x3fff
;
s
->
dl_busy
[
2
]
=
0x3fff
;
s
->
dl_busy
[
3
]
=
0x3fff
;
}
/*
void lock_buffers(shared_buffers *s, int subframe)
{
if (pthread_mutex_lock(&s->m[subframe]) != 0) {
printf("%s: fatal: lock fails\n", __FUNCTION__);
exit(1);
}
}
void unlock_buffers(shared_buffers *s, int subframe)
{
if (pthread_mutex_unlock(&s->m[subframe]) != 0) {
printf("%s: fatal: unlock fails\n", __FUNCTION__);
exit(1);
}
}
void wait_buffers(shared_buffers *s, int subframe)
{
if (pthread_cond_wait(&s->c[subframe], &s->m[subframe]) != 0) {
printf("%s: fatal: cond_wait fails\n", __FUNCTION__);
exit(1);
}
}
void signal_buffers(shared_buffers *s, int subframe)
{
if (pthread_cond_broadcast(&s->c[subframe]) != 0) {
printf("%s: fatal: cond_broadcast fails\n", __FUNCTION__);
exit(1);
}
}
*/
targets/ARCH/ETHERNET/oran/4g/shared_buffers.h
0 → 100644
View file @
ee60fbc2
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#ifndef _SHARED_BUFFERS_H_
#define _SHARED_BUFFERS_H_
#include <pthread.h>
#include <stdint.h>
typedef
struct
{
unsigned
char
dl
[
10
][
14
*
1200
*
4
];
unsigned
char
ul
[
10
][
14
*
1200
*
4
];
uint16_t
dl_busy
[
10
];
uint16_t
ul_busy
[
10
];
pthread_mutex_t
m
[
10
];
pthread_cond_t
c
[
10
];
unsigned
char
prach
[
10
][
849
*
4
];
unsigned
char
prach_busy
[
10
];
/* statistics/error counting */
int
ul_overflow
;
int
dl_underflow
;
}
shared_buffers
;
void
init_buffers
(
shared_buffers
*
s
);
void
lock_buffers
(
shared_buffers
*
s
,
int
subframe
);
void
unlock_buffers
(
shared_buffers
*
s
,
int
subframe
);
void
wait_buffers
(
shared_buffers
*
s
,
int
subframe
);
void
signal_buffers
(
shared_buffers
*
s
,
int
subframe
);
#endif
/* _SHARED_BUFFERS_H_ */
targets/ARCH/ETHERNET/oran/5g/low_dpdk_oran.c
0 → 100644
View file @
ee60fbc2
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#define _GNU_SOURCE
#include <sched.h>
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include "low_oran.h"
int
oran_main
(
int
argc
,
char
**
argv
,
oran_t
*
);
void
*
dpdk_thread
(
void
*
bs
)
{
char
*
v
[]
=
{
"softmodem"
,
"config_file_o_du.dat"
,
"0000:81:0e.0"
,
"0000:81:0e.1"
};
oran_main
(
4
,
v
,
bs
);
exit
(
1
);
return
0
;
}
void
*
oran_start_dpdk
(
char
*
ifname
,
shared_buffers
*
buffers
)
{
oran_t
*
bs
;
bs
=
calloc
(
1
,
sizeof
(
oran_t
));
if
(
bs
==
NULL
)
{
printf
(
"%s: out of memory
\n
"
,
__FUNCTION__
);
exit
(
1
);
}
bs
->
buffers
=
buffers
;
pthread_attr_t
attr
;
if
(
pthread_attr_init
(
&
attr
)
!=
0
)
{
printf
(
"pthread_attr_init failed
\n
"
);
exit
(
1
);
}
cpu_set_t
cpuset
;
CPU_ZERO
(
&
cpuset
);
CPU_SET
(
10
,
&
cpuset
);
if
(
pthread_attr_setaffinity_np
(
&
attr
,
sizeof
(
cpu_set_t
),
&
cpuset
)
!=
0
)
{
printf
(
"pthread_attr_setaffinity_np failed
\n
"
);
exit
(
1
);
}
if
(
pthread_attr_setschedpolicy
(
&
attr
,
SCHED_FIFO
)
!=
0
)
{
printf
(
"pthread_attr_setschedpolicy failed
\n
"
);
exit
(
1
);
}
struct
sched_param
params
;
params
.
sched_priority
=
sched_get_priority_max
(
SCHED_FIFO
);
if
(
sched_get_priority_max
(
SCHED_FIFO
)
==
-
1
)
{
printf
(
"sched_get_priority_max failed
\n
"
);
exit
(
1
);
}
if
(
pthread_attr_setschedparam
(
&
attr
,
&
params
)
!=
0
)
{
printf
(
"pthread_setschedparam failed
\n
"
);
exit
(
1
);
}
pthread_t
t
;
if
(
pthread_create
(
&
t
,
&
attr
,
dpdk_thread
,
bs
)
!=
0
)
{
printf
(
"%s: thread creation failed
\n
"
,
__FUNCTION__
);
exit
(
1
);
}
if
(
pthread_attr_destroy
(
&
attr
)
!=
0
)
{
printf
(
"pthread_attr_init failed
\n
"
);
exit
(
1
);
}
return
bs
;
}
targets/ARCH/ETHERNET/oran/5g/low_oran.c
0 → 100644
View file @
ee60fbc2
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include "low_oran.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void
*
oran_start_dpdk
(
char
*
ifname
,
shared_buffers
*
buffers
);
void
*
oran_start
(
char
*
ifname
,
shared_buffers
*
buffers
)
{
printf
(
"!!!!!!!!!!!!!!
\n
"
);
if
(
!
strcmp
(
ifname
,
"dpdk"
))
return
oran_start_dpdk
(
ifname
,
buffers
);
else
return
NULL
;
}
targets/ARCH/ETHERNET/oran/5g/low_oran.h
0 → 100644
View file @
ee60fbc2
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include "shared_buffers.h"
void
*
oran_start
(
char
*
ifname
,
shared_buffers
*
buffers
);
typedef
struct
{
shared_buffers
*
buffers
;
int
next_subframe
;
int
next_symbol
;
int
expected_oran_frame
;
}
oran_t
;
targets/ARCH/ETHERNET/oran/5g/oran.c
0 → 100644
View file @
ee60fbc2
This diff is collapsed.
Click to expand it.
targets/ARCH/ETHERNET/oran/5g/oran.h
0 → 100644
View file @
ee60fbc2
void
oran_fh_if4p5_south_out
(
RU_t
*
ru
,
int
frame
,
int
slot
,
uint64_t
timestamp
);
void
oran_fh_if4p5_south_in
(
RU_t
*
ru
,
int
*
frame
,
int
*
slot
);
typedef
struct
{
eth_state_t
e
;
shared_buffers
buffers
;
rru_config_msg_type_t
last_msg
;
int
capabilities_sent
;
void
*
oran_priv
;
}
oran_eth_state_t
;
targets/ARCH/ETHERNET/oran/5g/shared_buffers.c
0 → 100644
View file @
ee60fbc2
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include "shared_buffers.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void
init_buffers
(
shared_buffers
*
s
)
{
int
slot
;
memset
(
s
,
0
,
sizeof
(
*
s
));
for
(
slot
=
0
;
slot
<
10
;
slot
++
)
{
if
(
pthread_mutex_init
(
&
s
->
m_dl
[
slot
],
NULL
)
!=
0
||
pthread_cond_init
(
&
s
->
c_dl
[
slot
],
NULL
)
!=
0
||
pthread_cond_init
(
&
s
->
m_ul
[
slot
],
NULL
)
!=
0
||
pthread_cond_init
(
&
s
->
c_ul
[
slot
],
NULL
)
!=
0
)
{
printf
(
"%s: error initializing mutex/cond
\n
"
,
__FUNCTION__
);
exit
(
1
);
}
}
/* in FDD the eNB's first transmitted DL subframe is 4 but the device
* needs to have subframes 1, 2 and 3 ready. Let's pretend there are ready.
*/
s
->
dl_busy
[
1
]
=
0x3fff
;
s
->
dl_busy
[
2
]
=
0x3fff
;
s
->
dl_busy
[
3
]
=
0x3fff
;
s
->
dl_busy
[
4
]
=
0x3fff
;
s
->
dl_busy
[
5
]
=
0x3fff
;
}
/*
void lock_buffers(shared_buffers *s, int subframe)
{
if (pthread_mutex_lock(&s->m[subframe]) != 0) {
printf("%s: fatal: lock fails\n", __FUNCTION__);
exit(1);
}
}
void unlock_buffers(shared_buffers *s, int subframe)
{
if (pthread_mutex_unlock(&s->m[subframe]) != 0) {
printf("%s: fatal: unlock fails\n", __FUNCTION__);
exit(1);
}
}
void wait_buffers(shared_buffers *s, int subframe)
{
if (pthread_cond_wait(&s->c[subframe], &s->m[subframe]) != 0) {
printf("%s: fatal: cond_wait fails\n", __FUNCTION__);
exit(1);
}
}
void signal_buffers(shared_buffers *s, int subframe)
{
if (pthread_cond_broadcast(&s->c[subframe]) != 0) {
printf("%s: fatal: cond_broadcast fails\n", __FUNCTION__);
exit(1);
}
}
*/
targets/ARCH/ETHERNET/oran/5g/shared_buffers.h
0 → 100644
View file @
ee60fbc2
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#ifndef _SHARED_BUFFERS_H_
#define _SHARED_BUFFERS_H_
#include <pthread.h>
#include <stdint.h>
typedef
struct
{
unsigned
char
dl
[
20
][
14
*
1272
*
4
];
unsigned
char
ul
[
20
][
14
*
1272
*
4
];
uint16_t
dl_busy
[
20
];
uint16_t
ul_busy
[
20
];
pthread_mutex_t
m_ul
[
20
];
pthread_cond_t
c_ul
[
20
];
pthread_mutex_t
m_dl
[
20
];
pthread_cond_t
c_dl
[
20
];
unsigned
char
prach
[
20
][
849
*
4
];
unsigned
char
prach_busy
[
20
];
/* statistics/error counting */
int
ul_overflow
;
int
dl_underflow
;
}
shared_buffers
;
void
init_buffers
(
shared_buffers
*
s
);
void
lock_dl_buffers
(
shared_buffers
*
s
,
int
slot
);
void
unlock_dl_buffers
(
shared_buffers
*
s
,
int
slot
);
void
wait_dl_buffers
(
shared_buffers
*
s
,
int
slot
);
void
signal_dl_buffers
(
shared_buffers
*
s
,
int
slot
);
void
lock_ul_buffers
(
shared_buffers
*
s
,
int
slot
);
void
unlock_ul_buffers
(
shared_buffers
*
s
,
int
slot
);
void
wait_ul_buffers
(
shared_buffers
*
s
,
int
slot
);
void
signal_ul_buffers
(
shared_buffers
*
s
,
int
slot
);
#endif
/* _SHARED_BUFFERS_H_ */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment