108bfef04afed092b6a6a8a5fc5d1e1165c5304aeSeigo Nonaka/* 208bfef04afed092b6a6a8a5fc5d1e1165c5304aeSeigo Nonaka * Copyright (C) 2016 The Android Open Source Project 308bfef04afed092b6a6a8a5fc5d1e1165c5304aeSeigo Nonaka * 408bfef04afed092b6a6a8a5fc5d1e1165c5304aeSeigo Nonaka * Licensed under the Apache License, Version 2.0 (the "License"); 508bfef04afed092b6a6a8a5fc5d1e1165c5304aeSeigo Nonaka * you may not use this file except in compliance with the License. 608bfef04afed092b6a6a8a5fc5d1e1165c5304aeSeigo Nonaka * You may obtain a copy of the License at 708bfef04afed092b6a6a8a5fc5d1e1165c5304aeSeigo Nonaka * 808bfef04afed092b6a6a8a5fc5d1e1165c5304aeSeigo Nonaka * http://www.apache.org/licenses/LICENSE-2.0 908bfef04afed092b6a6a8a5fc5d1e1165c5304aeSeigo Nonaka * 1008bfef04afed092b6a6a8a5fc5d1e1165c5304aeSeigo Nonaka * Unless required by applicable law or agreed to in writing, software 1108bfef04afed092b6a6a8a5fc5d1e1165c5304aeSeigo Nonaka * distributed under the License is distributed on an "AS IS" BASIS, 1208bfef04afed092b6a6a8a5fc5d1e1165c5304aeSeigo Nonaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1308bfef04afed092b6a6a8a5fc5d1e1165c5304aeSeigo Nonaka * See the License for the specific language governing permissions and 1408bfef04afed092b6a6a8a5fc5d1e1165c5304aeSeigo Nonaka * limitations under the License. 1508bfef04afed092b6a6a8a5fc5d1e1165c5304aeSeigo Nonaka */ 161d461589869ee5b7102f96271b0ef0a776ab513cSeigo Nonaka#include <fcntl.h> 171d461589869ee5b7102f96271b0ef0a776ab513cSeigo Nonaka#include <sys/mman.h> 186c8722e217ff5238f0b849152d7936959a728103Seigo Nonaka#include <sys/stat.h> 1908bfef04afed092b6a6a8a5fc5d1e1165c5304aeSeigo Nonaka 201d461589869ee5b7102f96271b0ef0a776ab513cSeigo Nonaka#include <benchmark/benchmark.h> 210ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka#include <cutils/log.h> 220ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka#include <unicode/uclean.h> 230ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka#include <unicode/udata.h> 240ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka 250ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonakaint main(int argc, char** argv) { 260ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka const char* fn = "/system/usr/icu/" U_ICUDATA_NAME ".dat"; 270ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka int fd = open(fn, O_RDONLY); 280ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka LOG_ALWAYS_FATAL_IF(fd == -1); 290ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka struct stat st; 300ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka LOG_ALWAYS_FATAL_IF(fstat(fd, &st) != 0); 310ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka void* data = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0); 320ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka 330ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka UErrorCode errorCode = U_ZERO_ERROR; 340ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka udata_setCommonData(data, &errorCode); 350ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka LOG_ALWAYS_FATAL_IF(U_FAILURE(errorCode)); 360ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka u_init(&errorCode); 370ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka LOG_ALWAYS_FATAL_IF(U_FAILURE(errorCode)); 380ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka 390ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka benchmark::Initialize(&argc, argv); 400ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka benchmark::RunSpecifiedBenchmarks(); 410ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka 420ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka u_cleanup(); 430ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka return 0; 440ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka} 45