From patchwork Mon Dec 3 12:38:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Semashev X-Patchwork-Id: 11262 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 69DD744DFDF for ; Mon, 3 Dec 2018 14:38:38 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1867468A3A5; Mon, 3 Dec 2018 14:38:39 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f196.google.com (mail-lj1-f196.google.com [209.85.208.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ACA87680494 for ; Mon, 3 Dec 2018 14:38:32 +0200 (EET) Received: by mail-lj1-f196.google.com with SMTP id n18-v6so11207329lji.7 for ; Mon, 03 Dec 2018 04:38:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=PPAz3z/LjlwyJ50T8o35Tht4uPm1G8+Zq/UqhHQqzSE=; b=nMkAzbAUyKpLkJhxuUw0j6NERhgMl1Z+ASShdMyDpnEY0zH91pJ9xNizmZaB8RdhSh G122D2PzaI6ITGRPBOehCCkK6/9lBJlM3wngyS+egQnFjyS21vWCrFgI9DkiOnNgIHk7 mLzv7gOaiZgheRzPRYlZhSimB65fnAFUQPW6dHC4XV/LIk2r3RhRTZAGwVhjg7JFE0F0 AL2YOoUyc1vcqgh11mXmzOEKySkFyGr3uUCOpGxVIkTbxRCMmQF174D/DYgH6lDJEu6U oCN+MGjc8o8vXaWwpSG8a5EPl9UPMpNaxCpyGmdcz7Cl6caVn24RMsRhZEfe6nKfhRfP 1X4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=PPAz3z/LjlwyJ50T8o35Tht4uPm1G8+Zq/UqhHQqzSE=; b=Q0252fml9WlFNWB2gd3aHo2w4GtQO8JfxUtfZs4dR4sd3kI8qhwUY7XlDHJHBpJvcW 0qBFd6llM8TWroXxXSP7NNjNQODr2FY9jpYfPBgFjqcLEVvkvUl22Gtrx0ED4CS0NxOb 9upE4EIEuZrfymvfEQQHCrmHrHl1ltfnYXPF8gfKLqM/VGIbz4O2+i475DVG2ZR8asn/ /nx4Ma18H1fUzrD+oSZBF+V3NXiZFp3aBY9ftLLzKPiREXXW7N0a7VMOfqv2nrgFqhuC RQkhqnUeh6YxyvSZuTad6xlkMDDbBvCwiTtQmFks9QAd7TmNSqmD1aode6yW/LJCcd77 Cr0g== X-Gm-Message-State: AA+aEWYy/YuS9Sb6yATddhC9TcHnQKJmFGRDTGfut4v7tOC0WQq1dSBf KB26YzDBOc2B+r9vKXk4E/p0Qvjgyt8= X-Google-Smtp-Source: AFSGD/URbNdESaZ8vXiR93hkWR+3TwgCZ4OZA9kDETDCssZs4JUy9upjEmjGdjGs+3flAqK+YUC/sg== X-Received: by 2002:a2e:990e:: with SMTP id v14-v6mr11117990lji.60.1543840719464; Mon, 03 Dec 2018 04:38:39 -0800 (PST) Received: from localhost.localdomain (broadband-37-110-31-10.ip.moscow.rt.ru. [37.110.31.10]) by smtp.gmail.com with ESMTPSA id h203sm2339434lfe.44.2018.12.03.04.38.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 03 Dec 2018 04:38:38 -0800 (PST) From: Andrey Semashev To: ffmpeg-devel@ffmpeg.org Date: Mon, 3 Dec 2018 15:38:31 +0300 Message-Id: <20181203123831.7915-2-andrey.semashev@gmail.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181203123831.7915-1-andrey.semashev@gmail.com> References: <20181203123831.7915-1-andrey.semashev@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] lavf/file: Add support for file syncing. X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Andrey Semashev Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This commit adds support for IO synchronization API to the file backend. --- libavformat/file.c | 10 ++++++++++ libavformat/os_support.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/libavformat/file.c b/libavformat/file.c index 1d321c4205..9765fd76c7 100644 --- a/libavformat/file.c +++ b/libavformat/file.c @@ -254,6 +254,15 @@ static int64_t file_seek(URLContext *h, int64_t pos, int whence) return ret < 0 ? AVERROR(errno) : ret; } +static int file_sync(URLContext *h) +{ + if (h->flags & AVIO_FLAG_WRITE) { + FileContext *c = h->priv_data; + return fsync(c->fd); + } + return 0; +} + static int file_close(URLContext *h) { FileContext *c = h->priv_data; @@ -353,6 +362,7 @@ const URLProtocol ff_file_protocol = { .url_close = file_close, .url_get_file_handle = file_get_handle, .url_check = file_check, + .url_sync = file_sync, .url_delete = file_delete, .url_move = file_move, .priv_data_size = sizeof(FileContext), diff --git a/libavformat/os_support.h b/libavformat/os_support.h index 7a56dc9a7c..fcbdc884ba 100644 --- a/libavformat/os_support.h +++ b/libavformat/os_support.h @@ -93,6 +93,8 @@ static inline int is_dos_path(const char *path) #ifndef S_IWUSR #define S_IWUSR S_IWRITE #endif + +#define fsync _commit #endif #if CONFIG_NETWORK