MCPcopy Create free account
hub / github.com/F-Stack/f-stack / memif_socket_init

Function memif_socket_init

dpdk/drivers/net/memif/memif_socket.c:1002–1058  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1000}
1001
1002int
1003memif_socket_init(struct rte_eth_dev *dev, const char *socket_filename)
1004{
1005 struct pmd_internals *pmd = dev->data->dev_private;
1006 struct memif_socket *socket = NULL;
1007 struct memif_socket_dev_list_elt *elt;
1008 struct pmd_internals *tmp_pmd;
1009 struct rte_hash *hash;
1010 int ret;
1011 char key[MEMIF_SOCKET_UN_SIZE];
1012
1013 hash = rte_hash_find_existing(MEMIF_SOCKET_HASH_NAME);
1014 if (hash == NULL) {
1015 hash = memif_create_socket_hash();
1016 if (hash == NULL) {
1017 MIF_LOG(ERR, "Failed to create memif socket hash.");
1018 return -1;
1019 }
1020 }
1021
1022 memset(key, 0, MEMIF_SOCKET_UN_SIZE);
1023 strlcpy(key, socket_filename, MEMIF_SOCKET_UN_SIZE);
1024 ret = rte_hash_lookup_data(hash, key, (void **)&socket);
1025 if (ret < 0) {
1026 socket = memif_socket_create(key,
1027 (pmd->role == MEMIF_ROLE_CLIENT) ? 0 : 1,
1028 pmd->flags & ETH_MEMIF_FLAG_SOCKET_ABSTRACT,
1029 pmd->owner_uid, pmd->owner_gid);
1030 if (socket == NULL)
1031 return -1;
1032 ret = rte_hash_add_key_data(hash, key, socket);
1033 if (ret < 0) {
1034 MIF_LOG(ERR, "Failed to add socket to socket hash.");
1035 return ret;
1036 }
1037 }
1038 pmd->socket_filename = socket->filename;
1039
1040 TAILQ_FOREACH(elt, &socket->dev_queue, next) {
1041 tmp_pmd = elt->dev->data->dev_private;
1042 if (tmp_pmd->id == pmd->id && tmp_pmd->role == pmd->role) {
1043 MIF_LOG(ERR, "Two interfaces with the same id (%d) can "
1044 "not have the same role.", pmd->id);
1045 return -1;
1046 }
1047 }
1048
1049 elt = rte_malloc("pmd-queue", sizeof(struct memif_socket_dev_list_elt), 0);
1050 if (elt == NULL) {
1051 MIF_LOG(ERR, "Failed to add device to socket device list.");
1052 return -1;
1053 }
1054 elt->dev = dev;
1055 TAILQ_INSERT_TAIL(&socket->dev_queue, elt, next);
1056
1057 return 0;
1058}
1059

Callers 1

memif_createFunction · 0.85

Calls 8

rte_hash_find_existingFunction · 0.85
memif_create_socket_hashFunction · 0.85
memsetFunction · 0.85
rte_hash_lookup_dataFunction · 0.85
memif_socket_createFunction · 0.85
rte_hash_add_key_dataFunction · 0.85
rte_mallocFunction · 0.85
strlcpyFunction · 0.50

Tested by

no test coverage detected