Merge pull request #39952 from vnvo2409:gcs-registration
PiperOrigin-RevId: 313835518 Change-Id: I004d4b0927194571eb1d696c89a681ca7df6f3af
This commit is contained in:
		
						commit
						58740bfbd0
					
				
							
								
								
									
										30
									
								
								tensorflow/c/experimental/filesystem/plugins/gcs/BUILD
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								tensorflow/c/experimental/filesystem/plugins/gcs/BUILD
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,30 @@
 | 
			
		||||
# Experimental gcs filesystem plugin.
 | 
			
		||||
load("//tensorflow:tensorflow.bzl", "get_win_copts", "tf_cc_shared_object")
 | 
			
		||||
 | 
			
		||||
package(
 | 
			
		||||
    licenses = ["notice"],  # Apache 2.0
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Filesystem implementation for GCS environments
 | 
			
		||||
tf_cc_shared_object(
 | 
			
		||||
    name = "gcs_filesystem",
 | 
			
		||||
    framework_so = [],
 | 
			
		||||
    linkstatic = False,
 | 
			
		||||
    per_os_targets = 1,
 | 
			
		||||
    visibility = ["//visibility:public"],
 | 
			
		||||
    deps = [":gcs_filesystem_impl"],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# The real implementation of the filesystem.
 | 
			
		||||
cc_library(
 | 
			
		||||
    name = "gcs_filesystem_impl",
 | 
			
		||||
    srcs = ["gcs_filesystem.cc"],
 | 
			
		||||
    copts = select({
 | 
			
		||||
        "//conditions:default": [],
 | 
			
		||||
        "//tensorflow:windows": get_win_copts(),
 | 
			
		||||
    }),
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//tensorflow/c:tf_status",
 | 
			
		||||
        "//tensorflow/c/experimental/filesystem:filesystem_interface",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
@ -0,0 +1,72 @@
 | 
			
		||||
/* Copyright 2020 The TensorFlow Authors. All Rights Reserved.
 | 
			
		||||
 | 
			
		||||
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.
 | 
			
		||||
==============================================================================*/
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#include "tensorflow/c/experimental/filesystem/filesystem_interface.h"
 | 
			
		||||
#include "tensorflow/c/tf_status.h"
 | 
			
		||||
 | 
			
		||||
// Implementation of a filesystem for GCS environments.
 | 
			
		||||
// This filesystem will support `gs://` URI schemes.
 | 
			
		||||
 | 
			
		||||
static void* plugin_memory_allocate(size_t size) { return calloc(1, size); }
 | 
			
		||||
static void plugin_memory_free(void* ptr) { free(ptr); }
 | 
			
		||||
 | 
			
		||||
// SECTION 1. Implementation for `TF_RandomAccessFile`
 | 
			
		||||
// ----------------------------------------------------------------------------
 | 
			
		||||
namespace tf_random_access_file {
 | 
			
		||||
 | 
			
		||||
// TODO(vnvo2409): Implement later
 | 
			
		||||
 | 
			
		||||
}  // namespace tf_random_access_file
 | 
			
		||||
 | 
			
		||||
// SECTION 2. Implementation for `TF_WritableFile`
 | 
			
		||||
// ----------------------------------------------------------------------------
 | 
			
		||||
namespace tf_writable_file {
 | 
			
		||||
 | 
			
		||||
// TODO(vnvo2409): Implement later
 | 
			
		||||
 | 
			
		||||
}  // namespace tf_writable_file
 | 
			
		||||
 | 
			
		||||
// SECTION 3. Implementation for `TF_ReadOnlyMemoryRegion`
 | 
			
		||||
// ----------------------------------------------------------------------------
 | 
			
		||||
namespace tf_read_only_memory_region {
 | 
			
		||||
 | 
			
		||||
// TODO(vnvo2409): Implement later
 | 
			
		||||
 | 
			
		||||
}  // namespace tf_read_only_memory_region
 | 
			
		||||
 | 
			
		||||
// SECTION 4. Implementation for `TF_Filesystem`, the actual filesystem
 | 
			
		||||
// ----------------------------------------------------------------------------
 | 
			
		||||
namespace tf_gcs_filesystem {
 | 
			
		||||
 | 
			
		||||
// TODO(vnvo2409): Implement later
 | 
			
		||||
 | 
			
		||||
}  // namespace tf_gcs_filesystem
 | 
			
		||||
 | 
			
		||||
static void ProvideFilesystemSupportFor(TF_FilesystemPluginOps* ops,
 | 
			
		||||
                                        const char* uri) {
 | 
			
		||||
  TF_SetFilesystemVersionMetadata(ops);
 | 
			
		||||
  ops->scheme = strdup(uri);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void TF_InitPlugin(TF_FilesystemPluginInfo* info) {
 | 
			
		||||
  info->plugin_memory_allocate = plugin_memory_allocate;
 | 
			
		||||
  info->plugin_memory_free = plugin_memory_free;
 | 
			
		||||
  info->num_schemes = 1;
 | 
			
		||||
  info->ops = static_cast<TF_FilesystemPluginOps*>(
 | 
			
		||||
      plugin_memory_allocate(info->num_schemes * sizeof(info->ops[0])));
 | 
			
		||||
  ProvideFilesystemSupportFor(&info->ops[0], "gs");
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user