diff options
Diffstat (limited to 'lib/libtle_glue/zerocopy.h')
-rw-r--r-- | lib/libtle_glue/zerocopy.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/lib/libtle_glue/zerocopy.h b/lib/libtle_glue/zerocopy.h new file mode 100644 index 0000000..a37f8f5 --- /dev/null +++ b/lib/libtle_glue/zerocopy.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2018 Ant Financial Services Group. + * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + * + * 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. + */ + +#ifndef _TLE_GLUE_ZEROCOPY_H_ +#define _TLE_GLUE_ZEROCOPY_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * This API performs recv operation on specified socket, and it's + * optimized for zero copy, which means the caller does not need to + * prepare the buffer, instead, it will get a pointer on success. + * @param sockfd + * the file descriptor for the socket. + * @param buf + * after successfully receiving some payload, the pointer of the + * received buffer will be stored in *buf. + * @return + * the number of bytes received, or -1 if an error occurred, or 0 + * if a stream socket peer has performed an orderly shutdown. + * + */ +ssize_t recv_zc(int sockfd, void **buf); + +/** + * This API performs send operation on specified socket, and it's + * optimized for zero copy, which means the caller does not need to + * free the buffer, not even touch that buffer even after calling this + * API; the buffer will be freed after an ack from the socket peer. + * @param sockfd + * the file descriptor for the socket. + * @param buf + * The pointer to the payload buffer to be sent. + * @param len + * The length of the payload buffer to be sent. + * @return + * the number of bytes sent, or -1 if an error occurred. + */ +ssize_t send_zc(int sockfd, const void *buf, size_t len); + +#ifdef __cplusplus +} +#endif + +#endif /*_TLE_GLUE_ZEROCOPY_H_ */ |