Movatterモバイル変換


[0]ホーム

URL:


Google Git
Sign in
chromium /chromium /src /refs/heads/main /. /sql /initialization.cc
blob: 8a56c2131263eb5902a242b23ce817dbeb07a735 [file] [log] [blame]
Avi Drissman69b874f2022-09-15 19:11:14[diff] [blame]1// Copyright 2018 The Chromium Authors
Victor Costan3653df62018-02-08 21:38:16[diff] [blame]2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include"sql/initialization.h"
6
Victor Costan3653df62018-02-08 21:38:16[diff] [blame]7#include"base/no_destructor.h"
Victor Costan90dae262021-06-01 21:01:08[diff] [blame]8#include"base/synchronization/lock.h"
Etienne Bergerond4888db2021-04-30 01:18:49[diff] [blame]9#include"base/trace_event/trace_event.h"
Evan Stadea4987242024-01-26 00:40:39[diff] [blame]10#include"sql/vfs_wrapper.h"
Victor Costan3653df62018-02-08 21:38:16[diff] [blame]11#include"third_party/sqlite/sqlite3.h"
12
13namespace sql{
14
Evan Stadea4987242024-01-26 00:40:39[diff] [blame]15voidEnsureSqliteInitialized(bool create_wrapper){
Victor Costan3653df62018-02-08 21:38:16[diff] [blame]16// sqlite3_initialize() uses double-checked locking and thus can have
17// data races.
18static base::NoDestructor<base::Lock> sqlite_init_lock;
19 base::AutoLock auto_lock(*sqlite_init_lock);
20
21staticbool first_call=true;
22if(first_call){
Etienne Bergerond4888db2021-04-30 01:18:49[diff] [blame]23 TRACE_EVENT0("sql","EnsureSqliteInitialized");
Victor Costan3653df62018-02-08 21:38:16[diff] [blame]24 sqlite3_initialize();
Victor Costan3653df62018-02-08 21:38:16[diff] [blame]25 first_call=false;
26}
Evan Stadea4987242024-01-26 00:40:39[diff] [blame]27
28if(create_wrapper){
29EnsureVfsWrapper();
30}
Victor Costan3653df62018-02-08 21:38:16[diff] [blame]31}
32
33}// namespace sql

[8]ページ先頭

©2009-2025 Movatter.jp