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 */ 1608bfef04afed092b6a6a8a5fc5d1e1165c5304aeSeigo Nonaka#include <benchmark/benchmark.h> 1708bfef04afed092b6a6a8a5fc5d1e1165c5304aeSeigo Nonaka 180ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka#include <cutils/log.h> 190ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka 200ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka#include <unicode/uclean.h> 210ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka#include <unicode/udata.h> 220ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka 230ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka#include <fcntl.h> 240ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka#include <sys/stat.h> 250ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka#include <sys/mman.h> 260ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka 270ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonakaint main(int argc, char** argv) { 280ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka const char* fn = "/system/usr/icu/" U_ICUDATA_NAME ".dat"; 290ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka int fd = open(fn, O_RDONLY); 300ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka LOG_ALWAYS_FATAL_IF(fd == -1); 310ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka struct stat st; 320ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka LOG_ALWAYS_FATAL_IF(fstat(fd, &st) != 0); 330ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka void* data = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0); 340ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka 350ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka UErrorCode errorCode = U_ZERO_ERROR; 360ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka udata_setCommonData(data, &errorCode); 370ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka LOG_ALWAYS_FATAL_IF(U_FAILURE(errorCode)); 380ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka u_init(&errorCode); 390ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka LOG_ALWAYS_FATAL_IF(U_FAILURE(errorCode)); 400ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka 410ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka benchmark::Initialize(&argc, argv); 420ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka benchmark::RunSpecifiedBenchmarks(); 430ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka 440ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka u_cleanup(); 450ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka return 0; 460ca4fb6d44160245ad2333851ac18a13fc553ec9Seigo Nonaka} 47