13d0407baSopenharmony_ci/* 23d0407baSopenharmony_ci * Copyright (c) 2022 FuZhou Lockzhiner Electronic Co., Ltd. All rights reserved. 33d0407baSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 43d0407baSopenharmony_ci * you may not use this file except in compliance with the License. 53d0407baSopenharmony_ci * You may obtain a copy of the License at 63d0407baSopenharmony_ci * 73d0407baSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 83d0407baSopenharmony_ci * 93d0407baSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 103d0407baSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 113d0407baSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 123d0407baSopenharmony_ci * See the License for the specific language governing permissions and 133d0407baSopenharmony_ci * limitations under the License. 143d0407baSopenharmony_ci */ 153d0407baSopenharmony_ci 163d0407baSopenharmony_ci/** 173d0407baSopenharmony_ci * @addtogroup Lockzhiner 183d0407baSopenharmony_ci * 193d0407baSopenharmony_ci * @file spinlock.h 203d0407baSopenharmony_ci */ 213d0407baSopenharmony_ci 223d0407baSopenharmony_ci#ifndef LZ_HARDWARE_SPINLOCK_H 233d0407baSopenharmony_ci#define LZ_HARDWARE_SPINLOCK_H 243d0407baSopenharmony_ci 253d0407baSopenharmony_citypedef struct { 263d0407baSopenharmony_ci unsigned int flags; 273d0407baSopenharmony_ci} Spinlock; 283d0407baSopenharmony_ci 293d0407baSopenharmony_ci#define SPIN_LOCK_INITIALIZER \ 303d0407baSopenharmony_ci{ \ 313d0407baSopenharmony_ci .flags = 0, \ 323d0407baSopenharmony_ci} 333d0407baSopenharmony_ci 343d0407baSopenharmony_ci#define SPIN_LOCK_INIT(lock) Spinlock lock = SPIN_LOCK_INITIALIZER 353d0407baSopenharmony_ci 363d0407baSopenharmony_civoid SpinLockInit(Spinlock *lock); 373d0407baSopenharmony_ci 383d0407baSopenharmony_ci/** 393d0407baSopenharmony_ci * @par Description: 403d0407baSopenharmony_ci * This API is used to lock the spin lock. 413d0407baSopenharmony_ci * 423d0407baSopenharmony_ci * @param lock the spin lock to be locked 433d0407baSopenharmony_ci * 443d0407baSopenharmony_ci */ 453d0407baSopenharmony_civoid SpinLock(Spinlock *lock); 463d0407baSopenharmony_ci 473d0407baSopenharmony_ci/** 483d0407baSopenharmony_ci * @par Description: 493d0407baSopenharmony_ci * This API is used to unlock the spin lock. 503d0407baSopenharmony_ci * 513d0407baSopenharmony_ci * @param lock the spin lock to be unlocked 523d0407baSopenharmony_ci * 533d0407baSopenharmony_ci */ 543d0407baSopenharmony_civoid SpinUnlock(Spinlock *lock); 553d0407baSopenharmony_ci 563d0407baSopenharmony_ci#endif 573d0407baSopenharmony_ci 58