// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// @dart = 2.9

// VMOptions=--worker-thread-priority=12

import 'dart:ffi';
import 'dart:io';

import 'package:expect/expect.dart';

// Value of "PRIO_PROCESS".
const int kPrioProcess = 0;
const int kCurrentThreadId = 0;

// int getpriority(int which, id_t who)
typedef GetPriorityFT = int Function(int which, int who);
typedef GetPriorityNFT = Int32 Function(Int32 which, Uint32 who);

final getPriority = DynamicLibrary.process()
    .lookupFunction<GetPriorityNFT, GetPriorityFT>('getpriority');

main(args) {
  if (Platform.isLinux || Platform.isAndroid) {
    Expect.equals(12, getPriority(kPrioProcess, kCurrentThreadId));
  }
}
