/**
 * @file
 *
 * @brief module for shutting down the gpg-agent
 *
 * @copyright BSD License (see LICENSE.md or https://www.libelektra.org)
 *
 */

#include "gpg_shutdown.h"
#include <stdio.h>
#include <stdlib.h>

/**
 * @brief shutdown the gpg-agent
 * @retval 0 on success.
 * @retval -1 on error.
 */
int ELEKTRA_PLUGIN_FUNCTION (gpgQuitAgent) (void)
{
	// check if the gpg-connect-agent command is available
	int cmdAvailable = system ("command -v gpg-connect-agent");
	if (cmdAvailable != 0)
	{
		// nothing to do here
		return 0;
	}

	// try to gracefully shut down the gpg-agent
	int status = system ("gpg-connect-agent --quiet KILLAGENT /bye");
	if (status != 0)
	{
		// use the hammer
		int killStatus = system ("/bin/sh -c \"pgrep \'gpg-agent\' | xargs -d \'\\n\' \'kill\'\"");
		if (killStatus != 0)
		{
			return -1;
		}
	}
	return 0;
}

/**
 * @file
 *
 * @brief module for shutting down the gpg-agent
 *
 * @copyright BSD License (see LICENSE.md or https://www.libelektra.org)
 *
 */

#include "gpg_shutdown.h"
#include <stdio.h>
#include <stdlib.h>

/**
 * @brief shutdown the gpg-agent
 * @retval 0 on success.
 * @retval -1 on error.
 */
int ELEKTRA_PLUGIN_FUNCTION (gpgQuitAgent) (void)
{
	// try to gracefully shut down the gpg-agent
	int status = system ("gpg-connect-agent --quiet KILLAGENT /bye");
	if (status != 0)
	{
		// use the hammer
		int killStatus = system ("/bin/sh -c \"pgrep \'gpg-agent\' | xargs -d \'\\n\' \'kill\'\"");
		if (killStatus != 0)
		{
			return -1;
		}
	}
	return 0;
}

Revert "tests: check if gpg-agent command exists in shutdown code"

This reverts commit 7e0ef169c36712bb49b291a227ebd1b0036e5c75.


/**
 ******************************************************************************
 * Xenia : Xbox 360 Emulator Research Project                                 *
 ******************************************************************************
 * Copyright 2015 Ben Vanik. All rights reserved.                             *
 * Released under the BSD license - see LICENSE in the root for more details. *
 ******************************************************************************
 */

#ifndef XENIA_BASE_PLATFORM_X11_H_
#define XENIA_BASE_PLATFORM_X11_H_

// NOTE: if you're including this file it means you are explicitly depending
// on Linux headers. Including this file outside of linux platform specific
// source code will break portability

#include "xenia/base/platform.h"

// Xlib is used only for GLX interaction, the window management and input
// events are done with gtk/gdk
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>

//Used for window management. Gtk is for GUI and wigets, gdk is for lower
//level events like key presses, mouse events, etc
#include <gtk/gtk.h>
#include <gdk/gdk.h>

#endif  // XENIA_BASE_PLATFORM_X11_H_

Add gtk and x11 headers to linux specific platform header


#ifndef HAL1_H
#define HAL1_H

// Configurable constants

int const MAIN_MOTOR_PWM_TOP = 255;
int const MAIN_MOTOR_BRAKE_SPEED = 120;
int const MAIN_MOTOR_MIN_SPEED = 150;
int const MAIN_MOTOR_MED_SPEED = 254;
int const MAIN_MOTOR_MAX_SPEED = 255;
int const MAGNET_OPEN_WAIT = 5;		// 10ths of a second

void init(void);

void main_motor_stop();
void main_motor_cw_open(uint8_t speed);
void main_motor_ccw_close(uint8_t speed);
void set_main_motor_speed(int speed);
int get_main_motor_speed();
void aux_motor_stop();
void aux_motor_cw_close();
void aux_motor_ccw_open();
void magnet_off();
void magnet_on();
bool door_nearly_open();
bool door_fully_open();
bool door_fully_closed();

bool sensor_proximity();
bool button_openclose();
bool button_stop();
bool main_encoder();
bool aux_outdoor_limit();
bool aux_indoor_limit();
bool door_nearly_closed();
bool aux_encoder();

#endif

Add function prototypes and ifndef wrapper


#import <Foundation/Foundation.h>
#ifdef __cplusplus
#include <memory>
#include <mx3/mx3.hpp>
#endif

@interface MX3Snapshot : NSObject
// adding this here allows you to include this file from non-objc++ files
// since it is using c++ types
#ifdef __cplusplus
- (instancetype)initWithSnapshot:(std::unique_ptr<mx3::SqlSnapshot>)snapshot;
#endif
- (NSString *) rowAtIndex:(NSUInteger)index;
- (NSUInteger) count;
- (void) dealloc;
@end

#import <Foundation/Foundation.h>
#ifdef __cplusplus
#include <memory>
#include <mx3/mx3.hpp>
#endif

@interface MX3Snapshot : NSObject
// adding this here allows you to include this file from non-objc++ files
// since it is using c++ types
#ifdef __cplusplus
- (instancetype)initWithSnapshot:(std::unique_ptr<mx3::SqlSnapshot>)snapshot;
#endif
- (NSString *) rowAtIndex:(NSUInteger)index;
- (NSUInteger) count;

@end

Remove dealloc from header as it is declared in NSObject


#pragma once

#if defined(_MSC_VER)
    #define round(x) (x >= 0 ? (x + 0.5) : (x - 0.5))
#endif

class WindowFeature {
public:
	WindowFeature();
	virtual ~WindowFeature();
	virtual void apply(double *windowImage, double *descriptorVector) = 0;
	unsigned int descriptorLengthPerWindow;
};

#pragma once

#if _MSC_VER < 1900
    #define round(x) (x >= 0 ? (x + 0.5) : (x - 0.5))
#endif

class WindowFeature {
public:
	WindowFeature();
	virtual ~WindowFeature();
	virtual void apply(double *windowImage, double *descriptorVector) = 0;
	unsigned int descriptorLengthPerWindow;
};

Fix a build error (Python 3.5)

Fix a build error (Python 3.5)

Thanks to karel.palecek@tul.cz for supplying the fix to this bug.


#include "port/oc_assert.h"

// TODO:
void
abort_impl()
{
}

#include "port/oc_assert.h"

// TODO:
void
abort_impl(void)
{
}

Declare void parameter for RIOT

Declare void parameter for RIOT

This is partially reverting:
 "Bring RIOT OS port up-to-date with RIOT OS upstream"

This reverts commit 0ed0f4425cffdd84317998efa8fe19eef561c2fa.

Without this change RIOT will fail to build:
  port/riot/abort.c:5:1:\
  error: old-style function definition [-Werror=old-style-definition]

Change-Id: Ie6b838452412c844503a004656b7aac7b20e5d55
Signed-off-by: Philippe Coval <ff46fec9739d31cce915aabcc3a7a2c00eee4d6c@osg.samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/16497
Reviewed-by: Kishen Maloor <c62ddea3cd661a9268bff15f07fc2229cdc9ac02@intel.com>
Tested-by: Kishen Maloor <c62ddea3cd661a9268bff15f07fc2229cdc9ac02@intel.com>


/*
 * This file is part of Kotaka, a mud library for DGD
 * http://github.com/shentino/kotaka
 *
 * Copyright (C) 2013  Raymond Jennings
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

Add stub for auditing in the tester

Add stub for auditing in the tester


#include "../../math/reinterpret.h"
#include <stdint.h>

static uint64_t magnitude_(uint64_t high, uint64_t low)
{
    if (high > 0x7FFF000000000000 || (high == 0x7FFF000000000000 && low))
        return high;

    if (high >= 0x43FF000000000000)
        return 0x7FF0000000000000;

    if (high >= 0x3C01000000000000)
        return ((high - 0x3C00000000000000) << 4 | low >> 60) + (((low >> 59 & 1) | low << 4) > 0x8000000000000000);

    if (high >= 0x3BCC000000000000) {
        double significand = reinterpret(double, (0x8000000000000000 | high << 15) >> 11 | low >> 60 | !!(low << 4));
        double coeff = reinterpret(double, ((high >> 48) - 0x3802) << 52);
        return reinterpret(uint64_t, significand * coeff);
    }
    return 0;
}

double __trunctfdf2(long double x)
{
    unsigned __int128 i = reinterpret(unsigned __int128, x);
    uint64_t high = i >> 64;

    return reinterpret(double, magnitude_(high & INT64_MAX, i) | (high & 0x8000000000000000));
}

Implement long double -> double

Implement long double -> double


#ifndef VAST_OPTION_HPP
#define VAST_OPTION_HPP

#include <cppa/option.hpp>

namespace vast {

/// An optional value of `T` with similar semantics as `std::optional`.
template <typename T>
class option : public cppa::option<T>
{
  typedef cppa::option<T> super;
public:
#ifdef VAST_HAVE_INHERTING_CONSTRUCTORS
  using super::option;
#else
  option() = default;

  option(T x)
    : super(std::move(x))
  {
  }

  template <typename T0, typename T1, typename... Ts>
  option(T0&& x0, T1&& x1, Ts&&... args)
    : super(std::forward<T0>(x0),
            std::forward<T1>(x1),
            std::forward<Ts>(args)...)
  {
  }

  option(const option&) = default;
  option(option&&) = default;
  option& operator=(option const&) = default;
  option& operator=(option&&) = default;
#endif

  T* operator->() const
  {
    CPPA_REQUIRE(valid());
    return &cppa::option<T>::get();
  }
};

} // namespace vast

#endif

#ifndef VAST_OPTION_HPP
#define VAST_OPTION_HPP

#include <cppa/option.hpp>

namespace vast {

/// An optional value of `T` with similar semantics as `std::optional`.
template <typename T>
class option : public cppa::option<T>
{
  typedef cppa::option<T> super;
public:
#ifdef VAST_HAVE_INHERTING_CONSTRUCTORS
  using super::option;
#else
  option() = default;

  option(T x)
    : super(std::move(x))
  {
  }

  template <typename T0, typename T1, typename... Ts>
  option(T0&& x0, T1&& x1, Ts&&... args)
    : super(std::forward<T0>(x0),
            std::forward<T1>(x1),
            std::forward<Ts>(args)...)
  {
  }

  option(const option&) = default;
  option(option&&) = default;
  option& operator=(option const&) = default;
  option& operator=(option&&) = default;
#endif

  constexpr T const* operator->() const
  {
    return &cppa::option<T>::get();
  }
};

} // namespace vast

#endif

Make operator-> constexpr and return a T const*.


#include "MMDB.h"
#include "tap.h"
#include <sys/stat.h>
#include <string.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif

int main(void)
{
    const char *version = MMDB_lib_version();
    ok(version != NULL, "MMDB_lib_version exists");
    ok(strcmp(version, PACKAGE_VERSION) == 0, "version is " PACKAGE_VERSION);
    done_testing();
}

#include "MMDB.h"
#include "tap.h"
#include <sys/stat.h>
#include <string.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif

int main(void)
{
    const char *version = MMDB_lib_version();
    ok(version != NULL, "MMDB_lib_version exists");
    if ( version )
        ok(strcmp(version, PACKAGE_VERSION) == 0, "version is " PACKAGE_VERSION);
    done_testing();
}

Check version string only if MMDB_lib_version != NULL


/** @file
  GUID for hardware error record variables.

  Copyright (c) 2007 - 2009, Intel Corporation
  All rights reserved. This program and the accompanying materials
  are licensed and made available under the terms and conditions of the BSD License
  which accompanies this distribution.  The full text of the license may be found at
  http://opensource.org/licenses/bsd-license.php

  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

  Module Name:  HardwareErrorVariable.h

  @par Revision Reference:
  GUID defined in UEFI 2.1.

**/

#ifndef _HARDWARE_ERROR_VARIABLE_GUID_H_
#define _HARDWARE_ERROR_VARIABLE_GUID_H_

#define EFI_HARDWARE_ERROR_VARIABLE \
  { \
    0x414E6BDD, 0xE47B, 0x47cc, {0xB2, 0x44, 0xBB, 0x61, 0x02, 0x0C, 0xF5, 0x16} \
  }

extern EFI_GUID gEfiHardwareErrorVariableGuid;

#endif

/** @file
  GUID for hardware error record variables.

  Copyright (c) 2007 - 2009, Intel Corporation
  All rights reserved. This program and the accompanying materials
  are licensed and made available under the terms and conditions of the BSD License
  which accompanies this distribution.  The full text of the license may be found at
  http://opensource.org/licenses/bsd-license.php

  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

  @par Revision Reference:
  GUID defined in UEFI 2.1.

**/

#ifndef _HARDWARE_ERROR_VARIABLE_GUID_H_
#define _HARDWARE_ERROR_VARIABLE_GUID_H_

#define EFI_HARDWARE_ERROR_VARIABLE \
  { \
    0x414E6BDD, 0xE47B, 0x47cc, {0xB2, 0x44, 0xBB, 0x61, 0x02, 0x0C, 0xF5, 0x16} \
  }

extern EFI_GUID gEfiHardwareErrorVariableGuid;

#endif

Remove "Module Name:" from include file headers.

git-svn-id: 5648d1bec6962b0a6d1d1b40eba8cf5cdb62da3d@8895 6f19259b-4bc3-4df7-8a09-765794883524


/*
 * Copyright (c) 2010, Intel Corporation.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
 * Place - Suite 330, Boston, MA 02111-1307 USA.
 *
 * Author: John Fastabend <john.r.fastabend@intel.com>
 */

#ifndef _DCB_EVENT_H
#define _DCB_EVENT_H

enum dcbevent_notif_type {
	DCB_APP_EVENT = 1,
};

extern int register_dcbevent_notifier(struct notifier_block *nb);
extern int unregister_dcbevent_notifier(struct notifier_block *nb);
extern int call_dcbevent_notifiers(unsigned long val, void *v);

#endif

/*
 * Copyright (c) 2010, Intel Corporation.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
 * Place - Suite 330, Boston, MA 02111-1307 USA.
 *
 * Author: John Fastabend <john.r.fastabend@intel.com>
 */

#ifndef _DCB_EVENT_H
#define _DCB_EVENT_H

enum dcbevent_notif_type {
	DCB_APP_EVENT = 1,
};

#ifdef CONFIG_DCB
extern int register_dcbevent_notifier(struct notifier_block *nb);
extern int unregister_dcbevent_notifier(struct notifier_block *nb);
extern int call_dcbevent_notifiers(unsigned long val, void *v);
#else
static inline int
register_dcbevent_notifier(struct notifier_block *nb)
{
	return 0;
}

static inline int unregister_dcbevent_notifier(struct notifier_block *nb)
{
	return 0;
}

static inline int call_dcbevent_notifiers(unsigned long val, void *v)
{
	return 0;
}
#endif /* CONFIG_DCB */

#endif

Add stub routines for !CONFIG_DCB

dcb: Add stub routines for !CONFIG_DCB

To avoid ifdefs in the other code that supports DCB notifiers
add stub routines. This method seems popular in other net code
for example 8021Q.

Signed-off-by: John Fastabend <06228589568acf528fa1984e09626513a30b66ed@intel.com>
Signed-off-by: David S. Miller <fe08d3c717adf2ae63592e4c9aec6e3e404d8e3e@davemloft.net>


#ifndef OSSL_CORE_COMMON_H_INCLUDE
#define OSSL_CORE_COMMON_H_INCLUDE

#include <nan.h>

#include "logger.h"
#include "scoped_ssl.h"
#include "excep.h"
#include "key_exp.h"
#include "digest.h"
#include "bn.h"
#include <openssl/bn.h>

#endif // OSSL_CORE_COMMON_H_INCLUDE

#ifndef OSSL_CORE_COMMON_H_INCLUDE
#define OSSL_CORE_COMMON_H_INCLUDE

#ifdef _WIN32
#define __WINCRYPT_H__
#endif

#include <nan.h>

#include "logger.h"
#include "scoped_ssl.h"
#include "excep.h"
#include "key_exp.h"
#include "digest.h"
#include "bn.h"
#include <openssl/bn.h>

#endif // OSSL_CORE_COMMON_H_INCLUDE

Disable __WINCRYPT_H__ headers for Windows


/***************************************************************************

getarg.h - Support routines for the giflib utilities

**************************************************************************/

#ifndef _GETARG_H
#define _GETARG_H

#include <stdbool.h>

#define VERSION_COOKIE " Version %d.%d, "

/***************************************************************************
 Error numbers as returned by GAGetArg routine:
***************************************************************************/
#define CMD_ERR_NotAnOpt  1    /* None Option found. */
#define CMD_ERR_NoSuchOpt 2    /* Undefined Option Found. */
#define CMD_ERR_WildEmpty 3    /* Empty input for !*? seq. */
#define CMD_ERR_NumRead   4    /* Failed on reading number. */
#define CMD_ERR_AllSatis  5    /* Fail to satisfy (must-'!') option. */

bool GAGetArgs(int argc, char **argv, char *CtrlStr, ...);
void GAPrintErrMsg(int Error);
void GAPrintHowTo(char *CtrlStr);

/******************************************************************************
 From qprintf.c
******************************************************************************/
extern bool GifNoisyPrint;
extern void GifQprintf(char *Format, ...);
extern void PrintGifError(void);

/* These used to live in the library header */
#define GIF_MESSAGE(Msg) fprintf(stderr, "\n%s: %s\n", PROGRAM_NAME, Msg)
#define GIF_EXIT(Msg)    { GIF_MESSAGE(Msg); exit(-3); }

#endif /* _GETARG_H */

/* end */

Fix a header that had failed to track dome changed locations.


//===-- AMDGPUAsmPrinter.h - Print AMDGPU assembly code -------------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
/// \file
/// \brief AMDGPU Assembly printer class.
//
//===----------------------------------------------------------------------===//

#ifndef AMDGPU_ASMPRINTER_H
#define AMDGPU_ASMPRINTER_H

#include "llvm/CodeGen/AsmPrinter.h"
#include <string>
#include <vector>

namespace llvm {

class AMDGPUAsmPrinter : public AsmPrinter {

public:
  explicit AMDGPUAsmPrinter(TargetMachine &TM, MCStreamer &Streamer);

  virtual bool runOnMachineFunction(MachineFunction &MF);

  virtual const char *getPassName() const {
    return "AMDGPU Assembly Printer";
  }

  /// \brief Emit register usage information so that the GPU driver
  /// can correctly setup the GPU state.
  void EmitProgramInfoR600(MachineFunction &MF);
  void EmitProgramInfoSI(MachineFunction &MF);

  /// Implemented in AMDGPUMCInstLower.cpp
  virtual void EmitInstruction(const MachineInstr *MI);

protected:
  bool DisasmEnabled;
  std::vector<std::string> DisasmLines, HexLines;
  size_t DisasmLineMaxLen;
};

} // End anonymous llvm

#endif //AMDGPU_ASMPRINTER_H

//===-- AMDGPUAsmPrinter.h - Print AMDGPU assembly code ---------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
/// \file
/// \brief AMDGPU Assembly printer class.
//
//===----------------------------------------------------------------------===//

#ifndef AMDGPU_ASMPRINTER_H
#define AMDGPU_ASMPRINTER_H

#include "llvm/CodeGen/AsmPrinter.h"
#include <string>
#include <vector>

namespace llvm {

class AMDGPUAsmPrinter : public AsmPrinter {

public:
  explicit AMDGPUAsmPrinter(TargetMachine &TM, MCStreamer &Streamer);

  virtual bool runOnMachineFunction(MachineFunction &MF);

  virtual const char *getPassName() const {
    return "AMDGPU Assembly Printer";
  }

  /// \brief Emit register usage information so that the GPU driver
  /// can correctly setup the GPU state.
  void EmitProgramInfoR600(MachineFunction &MF);
  void EmitProgramInfoSI(MachineFunction &MF);

  /// Implemented in AMDGPUMCInstLower.cpp
  virtual void EmitInstruction(const MachineInstr *MI);

protected:
  bool DisasmEnabled;
  std::vector<std::string> DisasmLines, HexLines;
  size_t DisasmLineMaxLen;
};

} // End anonymous llvm

#endif //AMDGPU_ASMPRINTER_H

Fix missing C++ mode comment

Fix missing C++ mode comment

git-svn-id: 0ff597fd157e6f4fc38580e8d64ab130330d2411@194339 91177308-0d34-0410-b5e6-96231b3b80d8


/*
 * libaacs by Doom9 ppl 2009, 2010
 */

#ifndef AACS_H_
#define AACS_H_

#include <stdint.h>

#include "../file/configfile.h"

#define LIBAACS_VERSION "1.0"

typedef struct aacs AACS;
struct aacs {
    uint8_t pk[16], mk[16], vuk[16], vid[16];
    uint8_t *uks;           /* unit key array (size = 16 * num_uks, each key is
                             * at 16-byte offset)
                             */
    uint16_t num_uks;       /* number of unit keys */
    uint8_t iv[16];
    CONFIGFILE *kf;
};

AACS *aacs_open(const char *path, const char *keyfile_path);
void aacs_close(AACS *aacs);
int aacs_decrypt_unit(AACS *aacs, uint8_t *buf, uint32_t len, uint64_t offset);
uint8_t *aacs_get_vid(AACS *aacs);

#endif /* AACS_H_ */

/*
 * libaacs by Doom9 ppl 2009, 2010
 */

#ifndef AACS_H_
#define AACS_H_

#include "../file/configfile.h"

#include <stdint.h>

#define LIBAACS_VERSION "1.0"

typedef struct aacs AACS;
struct aacs {
    uint8_t pk[16], mk[16], vuk[16], vid[16];
    uint8_t *uks;           /* unit key array (size = 16 * num_uks, each key is
                             * at 16-byte offset)
                             */
    uint16_t num_uks;       /* number of unit keys */
    uint8_t iv[16];
    CONFIGFILE *kf;
};

AACS *aacs_open(const char *path, const char *keyfile_path);
void aacs_close(AACS *aacs);
int aacs_decrypt_unit(AACS *aacs, uint8_t *buf, uint32_t len, uint64_t offset);
uint8_t *aacs_get_vid(AACS *aacs);

#endif /* AACS_H_ */

Move inclusion of internal headers before system headers


// RUN: %clang_cc1 -Werror -triple i386-unknown-unknown -emit-llvm -O1 -disable-llvm-optzns -o %t %s
// RUN: FileCheck < %t %s

// Types with the may_alias attribute should be considered equivalent
// to char for aliasing.

typedef int __attribute__((may_alias)) aliasing_int;

void test0(aliasing_int *ai, int *i)
{
  *ai = 0;
  *i = 1;
}

// CHECK: store i32 0, i32* %tmp, !tbaa !1
// CHECK: store i32 1, i32* %tmp1, !tbaa !3

// CHECK: !0 = metadata !{metadata !"any pointer", metadata !1}
// CHECK: !1 = metadata !{metadata !"omnipotent char", metadata !2}
// CHECK: !2 = metadata !{metadata !"Simple C/C++ TBAA", null}
// CHECK: !3 = metadata !{metadata !"int", metadata !1}

// RUN: %clang_cc1 -Werror -triple i386-unknown-unknown -emit-llvm -O1 -disable-llvm-optzns -o %t %s
// RUN: FileCheck < %t %s

// Types with the may_alias attribute should be considered equivalent
// to char for aliasing.

typedef int __attribute__((may_alias)) aliasing_int;

void test0(aliasing_int *ai, int *i)
{
  *ai = 0;
  *i = 1;
}

// CHECK: store i32 0, i32* %{{.*}}, !tbaa !1
// CHECK: store i32 1, i32* %{{.*}}, !tbaa !3

// CHECK: !0 = metadata !{metadata !"any pointer", metadata !1}
// CHECK: !1 = metadata !{metadata !"omnipotent char", metadata !2}
// CHECK: !2 = metadata !{metadata !"Simple C/C++ TBAA", null}
// CHECK: !3 = metadata !{metadata !"int", metadata !1}

Generalize this test to work without instruction names.

git-svn-id: ffe668792ed300d6c2daa1f6eba2e0aa28d7ec6c@121742 91177308-0d34-0410-b5e6-96231b3b80d8


//
//  synchronizer.h
//  P2PSP
//
//  This code is distributed under the GNU General Public License (see
//  THE_GENERAL_GNU_PUBLIC_LICENSE.txt for extending this information).
//  Copyright (C) 2016, the P2PSP team.
//  http://www.p2psp.org
//

#include <boost/format.hpp>
#include <boost/program_options/parsers.hpp>
#include <boost/program_options/variables_map.hpp>
#include "../lib/p2psp/src/util/trace.h"
#include <arpa/inet.h>
#include <boost/array.hpp>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/thread/thread.hpp>
#include <ctime>
#include <fstream>
#include <string>
#include <tuple>
#include <vector>

namespace p2psp {

class Synchronizer {
public:
    Synchronizer();
    ~Synchronizer();

    const std::vector<std::string>* peer_list;

    void Run(int argc, const char* argv[]) throw(boost::system::system_error);  //Run the argument parser
    void PlayChunk();  //Play the chunk to the player
    void Synchronize(); //To get the offset from the first peer and synchronize the lists
    void ConnectToPeers(); //Connect the synchronizer with various peers
    };
}

//
//  synchronizer.h
//  P2PSP
//
//  This code is distributed under the GNU General Public License (see
//  THE_GENERAL_GNU_PUBLIC_LICENSE.txt for extending this information).
//  Copyright (C) 2016, the P2PSP team.
//  http://www.p2psp.org
//

#include <boost/format.hpp>
#include <boost/program_options/parsers.hpp>
#include <boost/program_options/variables_map.hpp>
#include "../lib/p2psp/src/util/trace.h"
#include <arpa/inet.h>
#include <boost/array.hpp>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/thread/thread.hpp>
#include <ctime>
#include <fstream>
#include <string>
#include <tuple>
#include <vector>

namespace p2psp {

class Synchronizer {
public:
    Synchronizer();
    ~Synchronizer();

    const std::vector<std::string>* peer_list;
    boost::thread_group thread_group_;

    void Run(int argc, const char* argv[]) throw(boost::system::system_error);  //Run the argument parser
    void PlayChunk();  //Play the chunk to the player
    void Synchronize(); //To get the offset from the first peer and synchronize the lists
    void ConnectToPeers(std::string); //Connect the synchronizer with various peers
    };
}

Add thread group to manage threads

Add thread group to manage threads


/// \file
/// \brief Singleton design pattern
///
/// \author Peter 'png' Hille <peter@das-system-networks.de>
#ifndef SINGLETON_HH
#define SINGLETON_HH 1

#include <dsnutil/compiler_features.h>

namespace dsn {
/// \brief Template for singleton classes
///
/// This template can be used to implement the "singleton" design pattern
/// on any class.
template <class Derived>
class Singleton {
public:
    /// \brief Access singleton instance
    ///
    /// Returns a reference to the instance of this singleton.
    static dsnutil_cpp_DEPRECATED Derived& getInstance()
    {
        return instanceRef();
    }

    static Derived& instanceRef()
    {
        static Derived instance;
        return instance;
    }

    static Derived* instancePtr()
    {
        return &instanceRef();
    }

protected:
    /// \brief Default constructor
    ///
    /// \note This ctor is protected so that derived classes can implement
    /// their own logics for object initialization while still maintaining
    /// the impossibility of direct ctor calls!
    Singleton() {}

private:
    /// \brief Copy constructor
    ///
    /// \note This ctor is private to prevent multiple instances of the same
    /// singleton from being created through object assignments!
    Singleton(const Singleton&) {}
};
}

#endif // !SINGLETON_HH

/// \file
/// \brief Singleton design pattern
///
/// \author Peter 'png' Hille <peter@das-system-networks.de>
#ifndef SINGLETON_HH
#define SINGLETON_HH 1

#include <dsnutil/compiler_features.h>

namespace dsn {
/// \brief Template for singleton classes
///
/// This template can be used to implement the "singleton" design pattern
/// on any class.
template <class Derived>
class Singleton {
public:
    /// \brief Access singleton instance
    ///
    /// \return Reference to the instance of this singleton.
    static dsnutil_cpp_DEPRECATED Derived& getInstance()
    {
        return instanceRef();
    }

    /// \brief Access singleton instance (by reference)
    ///
    /// \return Reference to the initialized singleton instance
    static Derived& instanceRef()
    {
        static Derived instance;
        return instance;
    }

    /// \brief Access singleton instance (by pointer)
    ///
    /// \return Pointer to the initialized singleton instance
    static Derived* instancePtr()
    {
        return &instanceRef();
    }

protected:
    /// \brief Default constructor
    ///
    /// \note This ctor is protected so that derived classes can implement
    /// their own logics for object initialization while still maintaining
    /// the impossibility of direct ctor calls!
    Singleton() {}

private:
    /// \brief Copy constructor
    ///
    /// \note This ctor is private to prevent multiple instances of the same
    /// singleton from being created through object assignments!
    Singleton(const Singleton&) {}
};
}

#endif // !SINGLETON_HH

Add Doxygen comments for new Singleton methods


/*
 * The decimal number, 585 = 1001001001 (binary), is palindromic in both bases.
 * Find the sum of all numbers, less than 5 000 000, which are palindromic in
 * base 10 and base 2. (Please note that the palindromic number, in either base,
 * may not include leading zeros.)
 */

#include <stdio.h>
#include <string.h>

#define MAXIM 5000000

char * strrev(char number[]){
  int length, index=0, tmp;

  length = strlen(number)-1;

  while(index<length) {
    tmp = number[index];
    number[index] = number[length];
    number[length] = tmp;
    index++; length--;
  }

  return number;
}

int *to_base(int base, char repr[], int number) {
  int remainder, length;

  static char new_number[] = "";
  new_number[0] = '\0';

  while(number) {
    remainder = number % base;
    number /= base;

    length = strlen(new_number);
    new_number[length] = repr[remainder];
    new_number[length+1] = '\0';
  }

  return atoi(strrev(new_number));

}

int check_palindrom(int number) {

  return 1;
}

int generate_palindroms() {
  int number, sum=0;

  for(number=11; number<=MAXIM; number++){
    if (check_palindrom(number) && check_palindrom(to_base(2, "01", number))) {
      sum += number;
    }
  }

  return sum;
}

int main() {
  generate_palindroms();
  return 0;
}

Transform from base 10 in whatever base you want


/*
* UsbDk filter/redirector driver
*
* Copyright (c) 2013  Red Hat, Inc.
*
* Authors:
*  Dmitry Fleytman  <dfleytma@redhat.com>
*
*/

#pragma once

#include "UsbDkData.h"
#include "UsbDkNames.h"

#define USBDK_DEVICE_TYPE 50000

// UsbDk Control Device IOCTLs
#define IOCTL_USBDK_COUNT_DEVICES \
    ULONG(CTL_CODE( USBDK_DEVICE_TYPE, 0x851, METHOD_BUFFERED, FILE_READ_ACCESS ))
#define IOCTL_USBDK_ENUM_DEVICES \
    ULONG(CTL_CODE( USBDK_DEVICE_TYPE, 0x852, METHOD_BUFFERED, FILE_READ_ACCESS ))
#define IOCTL_USBDK_ADD_REDIRECT \
    ULONG(CTL_CODE( USBDK_DEVICE_TYPE, 0x854, METHOD_BUFFERED, FILE_READ_ACCESS ))
#define IOCTL_USBDK_REMOVE_REDIRECT \
    ULONG(CTL_CODE( USBDK_DEVICE_TYPE, 0x855, METHOD_BUFFERED, FILE_READ_ACCESS ))

/*
* UsbDk filter/redirector driver
*
* Copyright (c) 2013  Red Hat, Inc.
*
* Authors:
*  Dmitry Fleytman  <dfleytma@redhat.com>
*
*/

#pragma once

#include "UsbDkData.h"
#include "UsbDkNames.h"

#define USBDK_DEVICE_TYPE 50000

// UsbDk Control Device IOCTLs
#define IOCTL_USBDK_COUNT_DEVICES \
    ULONG(CTL_CODE( USBDK_DEVICE_TYPE, 0x851, METHOD_BUFFERED, FILE_READ_ACCESS ))
#define IOCTL_USBDK_ENUM_DEVICES \
    ULONG(CTL_CODE( USBDK_DEVICE_TYPE, 0x852, METHOD_BUFFERED, FILE_READ_ACCESS ))
#define IOCTL_USBDK_ADD_REDIRECT \
    ULONG(CTL_CODE( USBDK_DEVICE_TYPE, 0x854, METHOD_BUFFERED, FILE_WRITE_ACCESS ))
#define IOCTL_USBDK_REMOVE_REDIRECT \
    ULONG(CTL_CODE( USBDK_DEVICE_TYPE, 0x855, METHOD_BUFFERED, FILE_WRITE_ACCESS ))

Fix control device IOCTLS access type

UsbDk: Fix control device IOCTLS access type

Signed-off-by: Dmitry Fleytman <f50f56ffad4b379c2a89812e98b14900ef87e9ea@redhat.com>


/*
 * Copyright (c) 2018, Ford Motor Company
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice, this
 * list of conditions and the following disclaimer.
 *
 * Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following
 * disclaimer in the documentation and/or other materials provided with the
 * distribution.
 *
 * Neither the name of the Ford Motor Company nor the names of its contributors
 * may be used to endorse or promote products derived from this software
 * without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef SRC_COMPONENTS_INCLUDE_TEST_APPLICATION_MANAGER_MOCK_APP_EXTENSION_H_
#define SRC_COMPONENTS_INCLUDE_TEST_APPLICATION_MANAGER_MOCK_APP_EXTENSION_H_

#include "gmock/gmock.h"
#include "application_manager/app_extension.h"

namespace test {
namespace components {
namespace application_manager_test {

namespace {
static unsigned MockAppExtensionUID = 123;
}  // namespace

class MockAppExtension : public application_manager::AppExtension {
 public:
  MockAppExtension() : AppExtension(MockAppExtensionUID) {}
  MOCK_METHOD1(
      SaveResumptionData,
      void(NsSmartDeviceLink::NsSmartObjects::SmartObject& resumption_data));
  MOCK_METHOD1(ProcessResumption,
               void(const NsSmartDeviceLink::NsSmartObjects::SmartObject&
                        resumption_data));
};

}  // namespace application_manager_test
}  // namespace components
}  // namespace test

#endif  // SRC_COMPONENTS_INCLUDE_TEST_APPLICATION_MANAGER_MOCK_APP_EXTENSION_H_

Add mock for AppExtension class

Add mock for AppExtension class


#pragma once

#include <glm/glm.hpp>
#include "sv/scivis.h"

inline void operator|(PUP::er &p, sv::VolumeDType &dtype) {
	if (p.isUnpacking()) {
		int t = 0;
		p | t;
		dtype = (sv::VolumeDType)t;
	} else {
		int t = dtype;
		p | t;
	}
}
inline void operator|(PUP::er &p, glm::uvec3 &v) {
	p | v.x;
	p | v.y;
	p | v.z;
}

Add operators for some types for PUP

Add operators for some types for PUP


#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <termios.h>
#include <unistd.h>

struct termios orig_termios;

void disableRawMode() {
  tcsetattr(STDIN_FILENO, TCSAFLUSH, &orig_termios);
}

void enableRawMode() {
  tcgetattr(STDIN_FILENO, &orig_termios);
  atexit(disableRawMode);

  struct termios raw = orig_termios;
  raw.c_iflag &= ~(ICRNL | IXON);
  raw.c_oflag &= ~(OPOST);
  raw.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG);

  tcsetattr(STDIN_FILENO, TCSAFLUSH, &raw);
}

int main() {
  enableRawMode();

  char c;
  while (read(STDIN_FILENO, &c, 1) == 1 && c!= 'q') {
    if (iscntrl(c)) {
      printf("%d\r\n", c);
    } else {
      printf("%d ('%c')\r\n", c, c);
    }
  }
  return 0;
}

#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <termios.h>
#include <unistd.h>

struct termios orig_termios;

void disableRawMode() {
  tcsetattr(STDIN_FILENO, TCSAFLUSH, &orig_termios);
}

void enableRawMode() {
  tcgetattr(STDIN_FILENO, &orig_termios);
  atexit(disableRawMode);

  struct termios raw = orig_termios;
  raw.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
  raw.c_oflag &= ~(OPOST);
  raw.c_cflag |= (CS8);
  raw.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG);

  tcsetattr(STDIN_FILENO, TCSAFLUSH, &raw);
}

int main() {
  enableRawMode();

  char c;
  while (read(STDIN_FILENO, &c, 1) == 1 && c!= 'q') {
    if (iscntrl(c)) {
      printf("%d\r\n", c);
    } else {
      printf("%d ('%c')\r\n", c, c);
    }
  }
  return 0;
}

Disable a few misc flags

Disable a few misc flags


//
//  TWRBorderedView.h
//  TWRBorderedView
//
//  Created by Michelangelo Chasseur on 15/04/14.
//  Copyright (c) 2014 Touchware. All rights reserved.
//

#import <UIKit/UIKit.h>

typedef NS_OPTIONS(NSUInteger, TWRBorderMask) {
    TWRBorderMaskTop      = 1 << 0,
    TWRBorderMaskBottom   = 1 << 1,
    TWRBorderMaskLeft     = 1 << 2,
    TWRBorderMaskRight    = 1 << 3
};

@interface TWRBorderedView : UIView

@property (nonatomic, assign) TWRBorderMask mask;
@property (nonatomic, assign) CGFloat borderWidth;

@property (strong, nonatomic) UIColor *borderColor;

// Use when assigning values from a XIB file
@property (nonatomic, assign) BOOL topBorder;
@property (nonatomic, assign) BOOL bottomBorder;
@property (nonatomic, assign) BOOL leftBorder;
@property (nonatomic, assign) BOOL rightomBorder;

- (id)initWithFrame:(CGRect)frame borderWidth:(CGFloat)width color:(UIColor *)color andMask:(TWRBorderMask)mask;

@end

//
//  TWRBorderedView.h
//  TWRBorderedView
//
//  Created by Michelangelo Chasseur on 15/04/14.
//  Copyright (c) 2014 Touchware. All rights reserved.
//

#import <UIKit/UIKit.h>

typedef NS_OPTIONS(NSUInteger, TWRBorderMask) {
    TWRBorderMaskTop      = 1 << 0,
    TWRBorderMaskBottom   = 1 << 1,
    TWRBorderMaskLeft     = 1 << 2,
    TWRBorderMaskRight    = 1 << 3
};

@interface TWRBorderedView : UIView

@property (nonatomic, assign) TWRBorderMask mask;
@property (nonatomic, assign) CGFloat borderWidth;

@property (strong, nonatomic) UIColor *borderColor;

// Use when assigning values from a XIB file
@property (nonatomic, assign) BOOL topBorder;
@property (nonatomic, assign) BOOL bottomBorder;
@property (nonatomic, assign) BOOL leftBorder;
@property (nonatomic, assign) BOOL rightBorder;

- (id)initWithFrame:(CGRect)frame borderWidth:(CGFloat)width color:(UIColor *)color andMask:(TWRBorderMask)mask;

@end

Fix spelling in property naming.

Fix spelling in property naming.


/* Copyright (c) 2002-2008 Dovecot authors, see the included COPYING file */

#include "common.h"
#include "commands.h"
#include "imap-expunge.h"

bool cmd_close(struct client_command_context *cmd)
{
	struct client *client = cmd->client;
	struct mailbox *mailbox = client->mailbox;
	struct mail_storage *storage;

	if (!client_verify_open_mailbox(cmd))
		return TRUE;

	storage = mailbox_get_storage(mailbox);
	client->mailbox = NULL;

	if (!imap_expunge(mailbox, NULL))
		client_send_untagged_storage_error(client, storage);

	if (mailbox_close(&mailbox) < 0)
                client_send_untagged_storage_error(client, storage);
	client_update_mailbox_flags(client, NULL);

	client_send_tagline(cmd, "OK Close completed.");
	return TRUE;
}

/* Copyright (c) 2002-2008 Dovecot authors, see the included COPYING file */

#include "common.h"
#include "commands.h"
#include "imap-expunge.h"

bool cmd_close(struct client_command_context *cmd)
{
	struct client *client = cmd->client;
	struct mailbox *mailbox = client->mailbox;
	struct mail_storage *storage;

	if (!client_verify_open_mailbox(cmd))
		return TRUE;

	storage = mailbox_get_storage(mailbox);
	client->mailbox = NULL;

	if (!imap_expunge(mailbox, NULL))
		client_send_untagged_storage_error(client, storage);
	else if (mailbox_sync(mailbox, 0, 0, NULL) < 0)
		client_send_untagged_storage_error(client, storage);

	if (mailbox_close(&mailbox) < 0)
                client_send_untagged_storage_error(client, storage);
	client_update_mailbox_flags(client, NULL);

	client_send_tagline(cmd, "OK Close completed.");
	return TRUE;
}

CLOSE: Synchronize the mailbox after expunging messages to actually get them
expunged.

--HG--
branch : HEAD


#ifndef TE_COMMANDS_H
#define TE_COMMANDS_H

#include <functional>
#include <map>
#include <SDL_keycode.h>
#include <SDL_events.h>
#include <memory>

namespace te
{
    class Rectangle;

    enum class Action { UP, DOWN };

    typedef std::function<void()> Command;

    typedef std::map<Action, Command> CommandMap;

    CommandMap createPaddleCommandMap(std::shared_ptr<Rectangle> pPaddle);

    typedef std::map<std::pair<SDL_Keycode, Uint32>, Action> KeyMap;

    KeyMap createPaddleKeyMap(unsigned int configN = 1);
}

#endif /* TE_COMMANDS_H */

#ifndef TE_COMMANDS_H
#define TE_COMMANDS_H

#include <functional>
#include <map>
#include <SDL_keycode.h>
#include <SDL_events.h>
#include <memory>

namespace te
{
    class Rectangle;

    enum class Action { UP, DOWN };

    //typedef std::function<void()> Command;

    //typedef std::map<Action, Command> CommandMap;

    //CommandMap createPaddleCommandMap(std::shared_ptr<Rectangle> pPaddle);

    //typedef std::map<std::pair<SDL_Keycode, Uint32>, Action> KeyMap;

    //KeyMap createPaddleKeyMap(unsigned int configN = 1);
}

#endif /* TE_COMMANDS_H */

Comment out old Command to avoid name collisions


// RUN: %ucc -ftrapv -fno-const-fold -o %t %s
// RUN: %t; [ $? -ne 0 ]

main()
{
	int x;

	// ensure powers of two aren't shift-converted, as overflow can't catch this
	x = -3 * 0x4000000000000000;

	return 0;
}

// RUN: %ocheck SIGILL %s -ftrapv -fno-const-fold -DT=int
// RUN: %ocheck SIGILL %s -ftrapv -fno-const-fold -DT=long
// RUN: %ocheck 0 %s -fno-const-fold -DT=int
// RUN: %ocheck 0 %s -fno-const-fold -DT=long

main()
{
	// test with T being both int and long, to check how truncations are dealt with
	T x;

	// ensure powers of two aren't shift-converted, as overflow can't catch this
	x = -3 * 0x4000000000000000;

	return 0;
}

Update trapv tests with explicit signal name


/*
 *  Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */

#ifndef AUDIO_NULL_AUDIO_POLLER_H_
#define AUDIO_NULL_AUDIO_POLLER_H_

#include "modules/audio_device/include/audio_device_defines.h"
#include "rtc_base/messagehandler.h"
#include "rtc_base/thread_checker.h"

namespace webrtc {
namespace internal {

class NullAudioPoller final : public rtc::MessageHandler {
 public:
  explicit NullAudioPoller(AudioTransport* audio_transport);
  ~NullAudioPoller();

 protected:
  void OnMessage(rtc::Message* msg) override;

 private:
  const rtc::ThreadChecker thread_checker_;
  AudioTransport* const audio_transport_;
  int64_t reschedule_at_;
};

}  // namespace internal
}  // namespace webrtc

#endif  // AUDIO_NULL_AUDIO_POLLER_H_

/*
 *  Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */

#ifndef AUDIO_NULL_AUDIO_POLLER_H_
#define AUDIO_NULL_AUDIO_POLLER_H_

#include "modules/audio_device/include/audio_device_defines.h"
#include "rtc_base/messagehandler.h"
#include "rtc_base/thread_checker.h"

namespace webrtc {
namespace internal {

class NullAudioPoller final : public rtc::MessageHandler {
 public:
  explicit NullAudioPoller(AudioTransport* audio_transport);
  ~NullAudioPoller();

 protected:
  void OnMessage(rtc::Message* msg) override;

 private:
  rtc::ThreadChecker thread_checker_;
  AudioTransport* const audio_transport_;
  int64_t reschedule_at_;
};

}  // namespace internal
}  // namespace webrtc

#endif  // AUDIO_NULL_AUDIO_POLLER_H_

Remove const from ThreadChecker in NullAudioPoller.

TBR=henrika@webrtc.org,solenberg@webrtc.org

Bug: webrtc:8482
Change-Id: Ib2738224e776618c692db95cd9473335bc17be15
Reviewed-on: https://webrtc-review.googlesource.com/17540
Commit-Queue: Björn Terelius <efeae16329b3cb4ac5daf80d4bfda3344c027db3@webrtc.org>
Reviewed-by: Björn Terelius <efeae16329b3cb4ac5daf80d4bfda3344c027db3@webrtc.org>
Cr-Commit-Position: 972c6d2dc6dd5efdad1377c0d224e03eb8f276f7@{#20505}


#include "safe-c/safe_memory.h"

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void* safe_malloc_function(size_t size, const char* calling_function)
{
    if (size == 0)
    {
        fprintf(stderr, "Error allocating memory: The function %s called "
                "'safe_malloc' and requested zero memory. The pointer should "
                "be explicitly set to NULL instead.\n",
                calling_function);
        exit(EXIT_FAILURE);
    }

    void* memory = malloc(size);
    if (!memory)
    {
        fprintf(stderr, "Error allocating memory: The function %s called "
                "'safe_malloc' requesting %u bytes of memory, but an error "
                "occurred allocating this amount of memory. Exiting",
                calling_function);
        exit(EXIT_FAILURE);
    }
    memset(memory, 0, size);
    return memory;
}

void safe_free_function(void** pointer)
{
    if (pointer != NULL)
    {
        free(*pointer);
        *pointer = NULL;
    }
}

#include "safe-c/safe_memory.h"

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void* safe_malloc_function(size_t size, const char* calling_function)
{
    if (size == 0)
    {
        fprintf(stderr, "Error allocating memory: The function %s called "
                "'safe_malloc' and requested zero memory. The pointer should "
                "be explicitly set to NULL instead.\n",
                calling_function);
        exit(EXIT_FAILURE);
    }

    void* memory = malloc(size);
    if (!memory)
    {
        fprintf(stderr, "Error allocating memory: The function %s called "
                "'safe_malloc' requesting %zu bytes of memory, but an error "
                "occurred allocating this amount of memory. Exiting",
                calling_function, size);
        exit(EXIT_FAILURE);
    }
    memory = memset(memory, 0, size);
    return memory;
}

void safe_free_function(void** pointer)
{
    if (pointer != NULL)
    {
        free(*pointer);
        *pointer = NULL;
    }
}

Fix: Add value parameter to fprintf in safe_malloc

Changed the value type in the `fprintf` from `u` to `zu`, this is because `size` is of type `size_t` and not `unsigned int`.
In addation, asign the return value of memset to `memory`.


/**
 * This program sets up a 50 Hz PWM and a basic UART command structure.
 * Users may connect to the UART and send one byte at a time to make up
 * more complex commands.  The basic layout of the command format is
 * like this: [B_1,B_2,0xFE], with the commas, brackets, and quotes all
 * being abstract (e.g. not really sent across the wire).
 *
 * B_1 will generally be the servo of interest (e.g. 'A' or 'B').
 * B_2 will generally be a byte between 0 and 180, representing degrees.
 * B_1 and B_2 may be sent interchangeably or even many times over, and the
 * AVR will just continue to record the data and echo bytes received back
 * to the sender until a COMMAND_EXEC_BYTE is reached.
 *
 * Bytes sent across the wire will be echoed back to the sending device,
 * except in the case when COMMAND_EXEC_BYTE (0xFE) is received.  In that
 * case, ACK_BYTE (0xFF) will be sent back to the sending device.
 *
 * In the case where the AVR thinks you are trying to set the degrees and
 * the degrees are outside the range of [0,180], it will send back a BAD_BYTE.
 */
#include <inttypes.h>

#include <avr/interrupt.h>
#include <avr/io.h>

#include "servo.h"
#include "uart.h"

#define COMMAND_EXEC_BYTE 0xFD
#define BAD_BYTE 0xFE
#define ACK_BYTE 0xFF

int main (void) {
  servo_init(OC1A | OC1B);
  uart_enable(UM_Asynchronous);
  sei();

  volatile uint16_t* pin = 0;
  uint8_t degrees = 0;
  for (;;) {
    volatile unsigned char b = uart_receive();
    switch (b) {
    case COMMAND_EXEC_BYTE:
      *pin = servo(degrees);
      b = ACK_BYTE;
      break;
    case 'A':
      pin = &OCR1A;
      break;
    case 'B':
      pin = &OCR1B;
      break;
    case ACK_BYTE:
      break;
    default:
      if (b > 180) {
        b = BAD_BYTE;
      } else {
        degrees = b;
      }
      break;
    }

    uart_transmit(b);
  }

  return 0;
}

Add a missing file, even though it doesn't do much right now.


#ifndef _TRACE_H_
#define _TRACE_H_
#include <stdio.h>
#include <errno.h>

#ifdef DEBUG
#define TRACE ERROR
#else
#define TRACE(fmt,arg...) ((void) 0)
#endif

#define ERROR(fmt,arg...) \
  fprintf(stderr, "%s:%s:%d: "fmt, program_invocation_short_name, __func__, __LINE__, ##arg)

#define FATAL(fmt,arg...) do { \
    ERROR(fmt, ##arg);         \
    exit(1);                   \
  } while (0)

#endif

#ifndef _TRACE_H_
#define _TRACE_H_
#include <stdio.h>
#include <errno.h>

#ifdef DEBUG
#define TRACE ERROR
#else
#define TRACE(fmt,arg...) ((void) 0)
#endif

#ifdef DEBUG
#define ERROR(fmt,arg...) \
  fprintf(stderr, "%s:%d: "fmt, __func__, __LINE__, ##arg)
#else
#define ERROR(fmt,arg...) \
  fprintf(stderr, "%s: "fmt, program_invocation_short_name, ##arg)
#endif

#define FATAL(fmt,arg...) do { \
    ERROR(fmt, ##arg);         \
    exit(1);                   \
  } while (0)

#endif

Add __func__, __LINE__ to TRACE if DEBUG, otherwise add progname.


/*
 * QLogic Fibre Channel HBA Driver
 * Copyright (c)  2003-2008 QLogic Corporation
 *
 * See LICENSE.qla2xxx for copyright and licensing details.
 */
/*
 * Driver version
 */
#define QLA2XXX_VERSION      "8.02.01-k1"

#define QLA_DRIVER_MAJOR_VER	8
#define QLA_DRIVER_MINOR_VER	2
#define QLA_DRIVER_PATCH_VER	1
#define QLA_DRIVER_BETA_VER	0

/*
 * QLogic Fibre Channel HBA Driver
 * Copyright (c)  2003-2008 QLogic Corporation
 *
 * See LICENSE.qla2xxx for copyright and licensing details.
 */
/*
 * Driver version
 */
#define QLA2XXX_VERSION      "8.02.01-k2"

#define QLA_DRIVER_MAJOR_VER	8
#define QLA_DRIVER_MINOR_VER	2
#define QLA_DRIVER_PATCH_VER	1
#define QLA_DRIVER_BETA_VER	0

Update version number to 8.02.01-k2.

[SCSI] qla2xxx: Update version number to 8.02.01-k2.

Signed-off-by: Andrew Vasquez <67840a4977006af7f584bdc4c86d7243c1629cad@qlogic.com>
Signed-off-by: James Bottomley <407b36959ca09543ccda8f8e06721c791bc53435@HansenPartnership.com>


/*
 * QLogic iSCSI HBA Driver
 * Copyright (c)  2003-2010 QLogic Corporation
 *
 * See LICENSE.qla4xxx for copyright and licensing details.
 */

#define QLA4XXX_DRIVER_VERSION	"5.02.00-k13"

/*
 * QLogic iSCSI HBA Driver
 * Copyright (c)  2003-2010 QLogic Corporation
 *
 * See LICENSE.qla4xxx for copyright and licensing details.
 */

#define QLA4XXX_DRIVER_VERSION	"5.02.00-k14"

Update driver version to 5.02.00-k14

[SCSI] qla4xxx: Update driver version to 5.02.00-k14

Signed-off-by: Vikas Chaudhary <c251871a64d7d31888eace0406cb3d4c419d5f73@qlogic.com>
Signed-off-by: James Bottomley <1acebbdca565c7b6b638bdc23b58b5610d1a56b8@Parallels.com>


#ifndef SSPAPPLICATION_ENTITIES_DOORENTITY_H
#define SSPAPPLICATION_ENTITIES_DOORENTITY_H

#include "Entity.h"
#include <vector>

class DoorEntity :
	public Entity
{
private:
	struct ElementState {
		int entityID;
		EVENT desiredState;
		bool desiredStateReached;
	};

	std::vector<ElementState> m_elementStates;

	bool m_isOpened;
	float m_minRotation;
	float m_maxRotation;
	float m_rotateTime;
	float m_rotatePerSec;

public:
	DoorEntity();
	virtual ~DoorEntity();

	int Initialize(int entityID, PhysicsComponent* pComp, GraphicsComponent* gComp, float rotateTime = 1.0f, float minRotation = 0.0f, float maxRotation = DirectX::XM_PI / 2.0f);

	int Update(float dT, InputHandler* inputHandler);
	int React(int entityID, EVENT reactEvent);

	bool SetIsOpened(bool isOpened);
	bool GetIsOpened();
};

#endif

#ifndef SSPAPPLICATION_ENTITIES_DOORENTITY_H
#define SSPAPPLICATION_ENTITIES_DOORENTITY_H

#include "Entity.h"
#include <vector>

class DoorEntity :
	public Entity
{
private:
	/*struct ElementState {
		int entityID;
		EVENT desiredState;
		bool desiredStateReached;
	};

	std::vector<ElementState> m_elementStates;*/

	bool m_isOpened;
	float m_minRotation;
	float m_maxRotation;
	float m_rotateTime;
	float m_rotatePerSec;

public:
	DoorEntity();
	virtual ~DoorEntity();

	int Initialize(int entityID, PhysicsComponent* pComp, GraphicsComponent* gComp, float rotateTime = 1.0f, float minRotation = 0.0f, float maxRotation = DirectX::XM_PI / 2.0f);

	int Update(float dT, InputHandler* inputHandler);
	int React(int entityID, EVENT reactEvent);

	bool SetIsOpened(bool isOpened);
	bool GetIsOpened();
};

#endif

UPDATE Commented out some test code

UPDATE Commented out some test code


/*
 * Copyright (c) 2006-2018, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2017/11/30     Bernard      The first version.
 */

#include <stdint.h>
#include <stdio.h>

#include <rtthread.h>
#include <dfs_posix.h>

#include <sys/mman.h>

void *mmap(void *addr, size_t length, int prot, int flags,
    int fd, off_t offset)
{
    uint8_t *mem;

    if (addr)
    {
        mem = addr;
    }
    else mem = (uint8_t *)malloc(length);

    if (mem)
    {
        off_t cur;
        size_t read_bytes;

        cur = lseek(fd, 0, SEEK_SET);

        lseek(fd, offset, SEEK_SET);
        read_bytes = read(fd, addr, length);
        if (read_bytes != length)
        {
            if (addr == RT_NULL)
            {
                /* read failed */
                free(mem);
                mem = RT_NULL;
            }
        }
        lseek(fd, cur, SEEK_SET);

        return mem;
    }

    errno = ENOMEM;

    return MAP_FAILED;
}

int munmap(void *addr, size_t length)
{
    if (addr)
    {
        free(addr);
        return 0;
    }

    return -1;
}

/*
 * Copyright (c) 2006-2018, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2017/11/30     Bernard      The first version.
 */

#include <stdint.h>
#include <stdio.h>

#include <rtthread.h>
#include <dfs_posix.h>

#include <sys/mman.h>

void *mmap(void *addr, size_t length, int prot, int flags,
    int fd, off_t offset)
{
    uint8_t *mem;

    if (addr)
    {
        mem = addr;
    }
    else mem = (uint8_t *)malloc(length);

    if (mem)
    {
        off_t cur;
        size_t read_bytes;

        cur = lseek(fd, 0, SEEK_SET);

        lseek(fd, offset, SEEK_SET);
        read_bytes = read(fd, mem, length);
        if (read_bytes != length)
        {
            if (addr == RT_NULL)
            {
                /* read failed */
                free(mem);
                mem = RT_NULL;
            }
        }
        lseek(fd, cur, SEEK_SET);

        return mem;
    }

    errno = ENOMEM;

    return MAP_FAILED;
}

int munmap(void *addr, size_t length)
{
    if (addr)
    {
        free(addr);
        return 0;
    }

    return -1;
}

Fix the addr=NULL issue in mmap.

[libc] Fix the addr=NULL issue in mmap.


#ifndef INPUTSTATE_H
#define INPUTSTATE_H

#include <SDL2/SDL.h>
#undef main
#include <map>

class InputState
{
public:
	enum KeyFunction { KF_EXIT, KF_FORWARDS, KF_BACKWARDS, KF_ROTATE_SUN };

	InputState();
	void readInputState();
	bool getKeyState(KeyFunction f);
	int getAbsoluteMouseX() { return mouse_x; };
	int getAbsoluteMouseY() { return mouse_y; };
	float getMouseX() { return (float)mouse_x / (float)w; };
	float getMouseY() { return (float)mouse_y / (float)h; };

	int w, h;
	int mouse_x, mouse_y;

private:
	Uint8 *keys;
	Uint8 key_function_to_keycode[4];
};

#endif

#ifndef INPUTSTATE_H
#define INPUTSTATE_H

#include <SDL2/SDL.h>
#undef main
#include <map>

class InputState
{
public:
	enum KeyFunction { KF_EXIT, KF_FORWARDS, KF_BACKWARDS, KF_ROTATE_SUN };

	InputState();
	void readInputState();
	bool getKeyState(KeyFunction f);
	int getAbsoluteMouseX() { return mouse_x; };
	int getAbsoluteMouseY() { return mouse_y; };
	float getMouseX() { return (float)mouse_x / (float)w; };
	float getMouseY() { return (float)mouse_y / (float)h; };

	int w, h;
	int mouse_x, mouse_y;

private:
	const Uint8 *keys;
	Uint8 key_function_to_keycode[4];
};

#endif

Change key state array constness.

Change key state array constness.

Fixed for compatibility with upstream SDL2.


/* ------------------------------------------------------------------
 * Copyright (C) 2009 Martin Storsjo
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 * -------------------------------------------------------------------
 */

#ifndef OSCL_BASE_H
#define OSCL_BASE_H

#include <stdint.h>

typedef int8_t int8;
typedef uint8_t uint8;
typedef int16_t int16;
typedef uint16_t uint16;
typedef int32_t int32;
typedef uint32_t uint32;
typedef int64_t int64;
typedef uint64_t uint64;

#define OSCL_IMPORT_REF
#define OSCL_EXPORT_REF
#define OSCL_UNUSED_ARG (void)

#endif

/* ------------------------------------------------------------------
 * Copyright (C) 2009 Martin Storsjo
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 * -------------------------------------------------------------------
 */

#ifndef OSCL_BASE_H
#define OSCL_BASE_H

#include <stdint.h>

typedef int8_t int8;
typedef uint8_t uint8;
typedef int16_t int16;
typedef uint16_t uint16;
typedef int32_t int32;
typedef uint32_t uint32;
typedef int64_t int64;
typedef uint64_t uint64;

#define OSCL_IMPORT_REF
#define OSCL_EXPORT_REF
#define OSCL_UNUSED_ARG(x) (void)(x)

#endif

Use suggested change from Martin in defining OSCL_UNUSED_ARG.


#ifndef ERROR_H
#define ERROR_H

/*
 * Note that we include "fmt" in the variadic argument list, because C99
 * apparently doesn't allow variadic macros to be invoked without any vargs
 * parameters.
 */
#define ERROR(...)      var_error(__FILE__, __LINE__, __VA_ARGS__)
#define FAIL()          simple_error(__FILE__, __LINE__)
#define ASSERT(cond)    ((cond) || assert_fail(APR_STRINGIFY(cond),     \
                                               __FILE__, __LINE__))

void simple_error(const char *file, int line_num);
void var_error(const char *file, int line_num,
               const char *fmt, ...) __attribute__((format(printf, 3, 4)));
int assert_fail(const char *cond, const char *file, int line_num);

#endif  /* ERROR_H */

#ifndef ERROR_H
#define ERROR_H

/*
 * Note that we include "fmt" in the variadic argument list, because C99
 * apparently doesn't allow variadic macros to be invoked without any vargs
 * parameters.
 */
#define ERROR(...)      var_error(__FILE__, __LINE__, __VA_ARGS__)
#define FAIL()          simple_error(__FILE__, __LINE__)
#define ASSERT(cond)    ((cond) || assert_fail(APR_STRINGIFY(cond),     \
                                               __FILE__, __LINE__))

void simple_error(const char *file, int line_num) __attribute__((noreturn));
void var_error(const char *file, int line_num,
               const char *fmt, ...) __attribute__((format(printf, 3, 4), noreturn));
int assert_fail(const char *cond, const char *file, int line_num);

#endif  /* ERROR_H */

Use GCC "noreturn" function attribute.

Use GCC "noreturn" function attribute.


// MIT License

// Copyright (c) 2017 Zhuhao Wang

// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:

// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.

// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.

#pragma once

#ifndef NEKIT_TUNNEL_BUFFER_SIZE
#define NEKIT_TUNNEL_BUFFER_SIZE 8192
#endif

#ifndef NEKIT_TUNNEL_MAX_BUFFER_SIZE
#define NEKIT_TUNNEL_MAX_BUFFER_SIZE NEKIT_TUNNEL_BUFFER_SIZE
#endif

// MIT License

// Copyright (c) 2017 Zhuhao Wang

// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:

// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.

// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.

#pragma once

#ifndef NEKIT_TUNNEL_BUFFER_SIZE
#define NEKIT_TUNNEL_BUFFER_SIZE 8192
#endif

#ifndef NEKIT_TUNNEL_MAX_BUFFER_SIZE
#define NEKIT_TUNNEL_MAX_BUFFER_SIZE (NEKIT_TUNNEL_BUFFER_SIZE * 2)
#endif

Enlarge default buffer size limit

FEAT: Enlarge default buffer size limit


#include <pthread.h>
#include <assert.h>

int g = 0;
pthread_mutex_t A = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t B = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t C = PTHREAD_MUTEX_INITIALIZER;

void *t_fun(void *arg) {
  pthread_mutex_lock(&A);
  pthread_mutex_lock(&C);
  pthread_mutex_lock(&B);
  g = 5;
  pthread_mutex_unlock(&B);
  pthread_mutex_lock(&B);
  g = 0;
  pthread_mutex_unlock(&B);
  pthread_mutex_unlock(&C);
  pthread_mutex_unlock(&A);
  return NULL;
}

int main(void) {
  pthread_t id;
  pthread_create(&id, NULL, t_fun, NULL);

  // This must be before the other to get Mine to fail for the other even with thread ID partitioning.
  pthread_mutex_lock(&B);
  pthread_mutex_lock(&C);
  assert(g == 0);
  pthread_mutex_unlock(&C);
  pthread_mutex_unlock(&B);

  pthread_mutex_lock(&A);
  pthread_mutex_lock(&B);
  assert(g == 0);
  pthread_mutex_unlock(&B);
  pthread_mutex_unlock(&A);

  pthread_join(id, NULL);
  return 0;
}

#include <pthread.h>
#include <assert.h>

int g = 0;
pthread_mutex_t A = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t B = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t C = PTHREAD_MUTEX_INITIALIZER;

void *t_fun(void *arg) {
  pthread_mutex_lock(&A);
  pthread_mutex_lock(&C);
  pthread_mutex_lock(&B);
  g = 5;
  pthread_mutex_unlock(&B);
  pthread_mutex_lock(&B);
  g = 0;
  pthread_mutex_unlock(&B);
  pthread_mutex_unlock(&C);
  pthread_mutex_unlock(&A);
  return NULL;
}

int main(void) {
  pthread_t id;
  pthread_create(&id, NULL, t_fun, NULL);

  // This must be before the other to get Mine to fail for the other even with thread ID partitioning.
  pthread_mutex_lock(&B);
  pthread_mutex_lock(&C);
  assert(g == 0); // mine and mutex-oplus fail, mutex-meet succeeds
  pthread_mutex_unlock(&C);
  pthread_mutex_unlock(&B);

  pthread_mutex_lock(&A);
  pthread_mutex_lock(&B);
  assert(g == 0); // mine fails, mutex-oplus and mutex-meet succeed
  pthread_mutex_unlock(&B);
  pthread_mutex_unlock(&A);

  pthread_join(id, NULL);
  return 0;
}

Add assert fail/success comments to 13/32


#include <uv.h>
#include <estragon.h>

#ifdef __sun
#include <sys/pset.h>
#include <sys/loadavg.h>
#endif

static uv_timer_t cpu_timer;

void send_cpu_usage(uv_timer_t *timer, int status) {
  double loadinfo[3];
#ifdef DEBUG
  printf("cpu usage timer fired, status %d\n", status);
#endif
#ifdef __sun
  /* On SunOS, if we're not in a global zone, uv_loadavg returns [0, 0, 0] */
  /* This, instead, gets the loadavg for our assigned processor set. */
  pset_getloadavg(PS_MYID, loadinfo, 3);
#else
  uv_loadavg(loadinfo);
#endif
  estragon_send("CPU load, last minute", "info", loadinfo[0]);
  estragon_send("CPU load, last 5 minutes", "info", loadinfo[1]);
  estragon_send("CPU load, last 15 minutes", "info", loadinfo[2]);
}

int cpu_init() {
  uv_timer_init(uv_default_loop(), &cpu_timer);
  uv_timer_start(&cpu_timer, send_cpu_usage, 0, 1000);

  return 0;
}

#include <uv.h>
#include <estragon.h>

#ifdef __sun
#include <sys/pset.h>
#include <sys/loadavg.h>
#endif

static uv_timer_t cpu_timer;

void send_cpu_usage(uv_timer_t *timer, int status) {
  double loadinfo[3];
#ifdef DEBUG
  printf("cpu usage timer fired, status %d\n", status);
#endif
#ifdef __sun
  /* On SunOS, if we're not in a global zone, uv_loadavg returns [0, 0, 0] */
  /* This, instead, gets the loadavg for our assigned processor set. */
  pset_getloadavg(PS_MYID, loadinfo, 3);
#else
  uv_loadavg(loadinfo);
#endif
  estragon_send("cpu", "info", "CPU load, last minute", loadinfo[0]);
  estragon_send("cpu", "info", "CPU load, last 5 minutes", loadinfo[1]);
  estragon_send("cpu", "info", "CPU load, last 15 minutes", loadinfo[2]);
}

int cpu_init() {
  uv_timer_init(uv_default_loop(), &cpu_timer);
  uv_timer_start(&cpu_timer, send_cpu_usage, 0, 1000);

  return 0;
}

[api] Use new `estragon_send` API in CPU plugin


/* Copyright (c) 2005-2008 Dovecot authors, see the included COPYING file */

#include "lib.h"
#include "istream-internal.h"
#include "istream-zlib.h"

#ifdef HAVE_BZLIB
#include <bzlib.h>

#define BZLIB_INCLUDE

#define gzFile BZFILE
#define gzdopen BZ2_bzdopen
#define gzclose BZ2_bzclose
#define gzread BZ2_bzread
#define gzseek BZ2_bzseek

#define i_stream_create_zlib i_stream_create_bzlib
#include "istream-zlib.c"
#endif

/* Copyright (c) 2005-2008 Dovecot authors, see the included COPYING file */

#include "lib.h"
#include "istream-internal.h"
#include "istream-zlib.h"

#ifdef HAVE_BZLIB
#include <stdio.h>
#include <bzlib.h>

#define BZLIB_INCLUDE

#define gzFile BZFILE
#define gzdopen BZ2_bzdopen
#define gzclose BZ2_bzclose
#define gzread BZ2_bzread
#define gzseek BZ2_bzseek

#define i_stream_create_zlib i_stream_create_bzlib
#include "istream-zlib.c"
#endif

bzlib: Include stdio.h in case bzlib.h needs it.

--HG--
branch : HEAD


#include <kernel/kernel.h>
#include <kernel/console.h>
#include <arch/ioport.h>

#define SERIAL_PORT_IO_BASE 0x3f8
#define REG_DATA            (SERIAL_PORT_IO_BASE)
#define REG_DLL             (SERIAL_PORT_IO_BASE)
#define REG_IER             (SERIAL_PORT_IO_BASE + 1)
#define REG_DLH             (SERIAL_PORT_IO_BASE + 1)
#define REG_FCR             (SERIAL_PORT_IO_BASE + 2)
#define REG_LCR             (SERIAL_PORT_IO_BASE + 3)
#define REG_LSR             (SERIAL_PORT_IO_BASE + 5)

#define FCR_EFIFO           BITU(0)
#define FCR_14BYTES         (BITU(6) | BITU(7))
#define LCR_8BIT            (BITU(0) | BITU(1))
#define LCR_DLAB            BITU(7)
#define LSR_TX_READY        BITU(5)

static void putchar(char c)
{
	while (!(inb(REG_LSR) & LSR_TX_READY));
	outb(REG_DATA, c);
}

static void write(const char *buf, unsigned long size)
{
	for (unsigned i = 0; i != size; ++i)
		putchar(buf[i]);
}

static struct console serial_console = {
	.write = write
};

static void init_polling_mode(void)
{
	/* disable all interrupts */
	outb(REG_IER, 0);
	/* enable access to frequency divisor */
	outb(REG_LCR, LCR_DLAB);
	/* set 9600 baud rate (timer frequency is 115200, divide it by 12) */
	outb(REG_DLL, 0x0C);
	outb(REG_DLH, 0x00);
	/* set frame format (8 bit, no parity, 1 stop bit) and drop DLAB */
	outb(REG_LCR, LCR_8BIT);
	/* enable 14 byte length FIFO buffer */
	outb(REG_FCR, FCR_EFIFO | FCR_14BYTES);
}

void init_serial_console(void)
{
	init_polling_mode();
	register_console(&serial_console);
}

Add serial port console implementation

Add serial port console implementation


//
//  APIAFNetworkingHTTPClient.h
//  APIClient
//
//  Created by Klaas Pieter Annema on 30-08-13.
//  Copyright (c) 2013 Klaas Pieter Annema. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "AFNetworking.h"

#import "APIHTTPClient.h"

@interface APIAFNetworkingHTTPClient : NSObject <APIHTTPClient>

@property (nonatomic, readonly, copy) NSURL *baseURL;
@property (nonatomic, readonly, strong) NSURLSessionConfiguration *sessionConfiguration;

- (id)initWithBaseURL:(NSURL *)baseURL;
- (id)initWithBaseURL:(NSURL *)baseURL
 sessionConfiguration:(NSURLSessionConfiguration *)sessionConfiguration NS_DESIGNATED_INITIALIZER;

@end

//
//  APIAFNetworkingHTTPClient.h
//  APIClient
//
//  Created by Klaas Pieter Annema on 30-08-13.
//  Copyright (c) 2013 Klaas Pieter Annema. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <AFNetworking/AFNetworking.h>

#import "APIHTTPClient.h"

@interface APIAFNetworkingHTTPClient : NSObject <APIHTTPClient>

@property (nonatomic, readonly, copy) NSURL *baseURL;
@property (nonatomic, readonly, strong) NSURLSessionConfiguration *sessionConfiguration;

- (id)initWithBaseURL:(NSURL *)baseURL;
- (id)initWithBaseURL:(NSURL *)baseURL
 sessionConfiguration:(NSURLSessionConfiguration *)sessionConfiguration NS_DESIGNATED_INITIALIZER;

@end

Use the correct import syntax

Use the correct import syntax


/*
 * Copyright 2014 Google Inc. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef FRUIT_UNORDERED_MAP_H
#define FRUIT_UNORDERED_MAP_H

#ifdef FRUIT_NO_SPARSE_HASH
#include <unordered_map>

namespace fruit {
namespace impl {

template <typename Key, typename Value>
using UnorderedMap = std::unordered_map<Key, Value>;

} // namespace impl
} // namespace fruit

#else
#include <sparsehash/dense_hash_map>

namespace fruit {
namespace impl {

template <typename Key, typename Value>
using UnorderedMap = google::dense_hash_map<Key, Value>;

} // namespace impl
} // namespace fruit

#endif

#endif // FRUIT_UNORDERED_MAP_H

/*
 * Copyright 2014 Google Inc. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef FRUIT_UNORDERED_MAP_H
#define FRUIT_UNORDERED_MAP_H

#ifdef FRUIT_NO_SPARSE_HASH
#include <unordered_map>

namespace fruit {
namespace impl {

template <typename Key, typename Value>
using UnorderedMap = std::unordered_map<Key, Value>;

} // namespace impl
} // namespace fruit

#else
#include <google/dense_hash_map>

namespace fruit {
namespace impl {

template <typename Key, typename Value>
using UnorderedMap = google::dense_hash_map<Key, Value>;

} // namespace impl
} // namespace fruit

#endif

#endif // FRUIT_UNORDERED_MAP_H

Use the old include path for sparsehash to support older versions of sparsehash (still currently used in Ubuntu and Fedora).


Add question comment to constructor.

Add question comment to constructor.


// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef OZONE_WAYLAND_INPUT_DEVICE_H_
#define OZONE_WAYLAND_INPUT_DEVICE_H_

#include <wayland-client.h>
#include "base/basictypes.h"

namespace ozonewayland {

class WaylandKeyboard;
class WaylandPointer;
class WaylandDisplay;
class WaylandWindow;

class WaylandInputDevice {
 public:
  WaylandInputDevice(WaylandDisplay* display, uint32_t id);
  ~WaylandInputDevice();

  wl_seat* GetInputSeat() { return input_seat_; }
  WaylandKeyboard* GetKeyBoard() const { return input_keyboard_; }
  WaylandPointer* GetPointer() const { return input_pointer_; }
  unsigned GetFocusWindowHandle() { return focused_window_handle_; }
  void SetFocusWindowHandle(unsigned windowhandle);

 private:
  static void OnSeatCapabilities(void *data,
                                 wl_seat *seat,
                                 uint32_t caps);

  // Keeps track of current focused window.
  unsigned focused_window_handle_;
  wl_seat* input_seat_;
  WaylandKeyboard* input_keyboard_;
  WaylandPointer* input_pointer_;

  DISALLOW_COPY_AND_ASSIGN(WaylandInputDevice);
};

}  // namespace ozonewayland

#endif  // OZONE_WAYLAND_INPUT_DEVICE_H_

// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef OZONE_WAYLAND_INPUT_DEVICE_H_
#define OZONE_WAYLAND_INPUT_DEVICE_H_

#include <wayland-client.h>
#include "base/basictypes.h"

namespace ozonewayland {

class WaylandKeyboard;
class WaylandPointer;
class WaylandDisplay;
class WaylandWindow;

class WaylandInputDevice {
 public:
  WaylandInputDevice(WaylandDisplay* display, uint32_t id);
  ~WaylandInputDevice();

  wl_seat* GetInputSeat() const { return input_seat_; }
  WaylandKeyboard* GetKeyBoard() const { return input_keyboard_; }
  WaylandPointer* GetPointer() const { return input_pointer_; }
  unsigned GetFocusWindowHandle() const { return focused_window_handle_; }
  void SetFocusWindowHandle(unsigned windowhandle);

 private:
  static void OnSeatCapabilities(void *data,
                                 wl_seat *seat,
                                 uint32_t caps);

  // Keeps track of current focused window.
  unsigned focused_window_handle_;
  wl_seat* input_seat_;
  WaylandKeyboard* input_keyboard_;
  WaylandPointer* input_pointer_;

  DISALLOW_COPY_AND_ASSIGN(WaylandInputDevice);
};

}  // namespace ozonewayland

#endif  // OZONE_WAYLAND_INPUT_DEVICE_H_

Make read only functions as const.

Inputs: Make read only functions as const.

Adds missing const keyword for Read only functions in WaylandInputDevice.


#ifndef INPUT_AXIS_H
#define INPUT_AXIS_H

#include "../services.h"
#include <stdbool.h>

typedef struct {
	bool invert;
	bool enabled;

	/* Deadzone */
	double negative_deadzone;
	double positive_deadzone;

	/* Max/min */
	double negative_maximum;
	double positive_maximum;
} axis_config;

typedef struct {
	const char* name;
	double value;

	axis_config* settings;
} inputaxis;

typedef struct {
	size_t num_inputaxes;
	inputaxis* axes;
} inputaxis_data;

const axis_config* default_settings();

double get_input_for_axis(void*, const char*);
int update_axis_value(inputaxis_data*, const char* name, double val);

int create_axis(inputaxis_data*, const char* name, axis_config*);
int delete_axis(inputaxis_data*, const char* name, axis_config**);

axis_config* get_axis_settings(inputaxis_data*, const char* name);
int set_axis_settings(inputaxis_data*, const char* name, axis_config* settings);

input* create_inputaxis();
inputaxis_data* delete_inputaxis(input*);

#endif /* INPUT_AXIS_H */

#ifndef INPUT_AXIS_H
#define INPUT_AXIS_H

#include "../services.h"
#include <stdbool.h>

typedef struct {
	bool invert;
	bool enabled;

	/* Deadzone */
	double negative_deadzone;
	double positive_deadzone;

	/* Max/min */
	double negative_maximum;
	double positive_maximum;
} axis_config;

typedef struct {
	const char* name;
	double value;

	axis_config* settings;
} inputaxis;

typedef struct {
	size_t num_inputaxes;
	inputaxis* axes;
} inputaxis_data;

const axis_config* default_settings();

double get_input_for_axis(void*, const char*);
int update_axis_value(inputaxis_data*, const char* name, double val);
void reset_axis_values(inputaxis_data* d);

int create_axis(inputaxis_data*, const char* name, axis_config*);
int delete_axis(inputaxis_data*, const char* name, axis_config**);

axis_config* get_axis_settings(inputaxis_data*, const char* name);
int set_axis_settings(inputaxis_data*, const char* name, axis_config* settings);

input* create_inputaxis();
inputaxis_data* delete_inputaxis(input*);

#endif /* INPUT_AXIS_H */

Add new function to header

Add new function to header


#include <stdio.h>
#include <sys/socket.h>
#include <netdb.h>
#include <string.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
    char *host = "127.0.0.1";
    int port = 2000;
    int timeout = 2;

    int sockfd, n;

    char buffer[256];

    struct sockaddr_in serv_addr;
    struct hostent *server;
    struct timeval tv;

    tv.tv_sec = timeout;

    server = gethostbyname(host);
    bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length);
    serv_addr.sin_port = htons(port);
    serv_addr.sin_family = AF_INET;

    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(struct timeval));
    setsockopt(sockfd, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(struct timeval));
    connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));

    n = read(sockfd, buffer, 255);

    if (n < 0) {
        perror("error reading from socket");
        return 1;
    }

    printf("%s\n", buffer);
    return 0;
}

#include <stdio.h>
#include <sys/socket.h>
#include <netdb.h>
#include <string.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
    char *host = "127.0.0.1";
    int port = 2000;
    int timeout = 2;

    int sockfd, n;

    char buffer[256];

    struct sockaddr_in serv_addr;
    struct hostent *server;
    struct timeval tv;

    tv.tv_sec = timeout;
    tv.tv_usec = 0;

    server = gethostbyname(host);
    bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length);
    serv_addr.sin_port = htons(port);
    serv_addr.sin_family = AF_INET;

    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(struct timeval));
    setsockopt(sockfd, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(struct timeval));
    connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));

    n = read(sockfd, buffer, 255);

    if (n < 0) {
        perror("error reading from socket");
        return 1;
    }

    printf("%s\n", buffer);
    return 0;
}

Fix for Ubuntu 14.04, CentOS should work too

Assign zero to tv.tv_usec, or it maybe any value.
The c version tiemout works on Ubuntu 14.04 after my fix.


/*
name: TEST017
description: Basic test about pointers and structs
output:
F1
G9	F1	main
{
-
S2	s1
(
M3	I	y
M4	I	z
)
A2	S2	nested
S6	s2
(
M8	P	p
)
A3	S6	v
	A3	M8	.P	A2	'P	:P
	A3	M8	.P	@S2	M3	.I	#I1	:I
	A3	M8	.P	@S2	M4	.I	#I2	:I
	j	L4	A2	M3	.I	#I1	=I
	yI	#I1
L4
	j	L5	A2	M4	.I	#I2	=I
	yI	#I2
L5
	yI	#I0
}
*/

#line 1

struct s1 {
    int y;
    int z;
};

struct s2 {
    struct s1 *p;
};

int main()
{
    struct s1 nested;
    struct s2 v;
    v.p = &nested;
    v.p->y = 1;
    v.p->z = 2;
    if (nested.y != 1)
        return 1;
    if (nested.z != 2)
        return 2;
    return 0;
}

Add basic test about pointer and structs


#pragma once

#define pi (3.14159265358979323846)

#define abort_on_error(where, error) ({ \
    typeof(where) _where = where; \
    typeof(error) _error = error; \
    \
    if(_error) { \
        fprintf( \
            stderr, \
            __FILE__ ":%d: %s error (%#x).\n", \
            __LINE__, \
            _where, \
            _error \
        ); \
    } \
})

#pragma once
#include <stdlib.h>

#define pi (3.14159265358979323846)

#define abort_on_error(where, error) ({ \
    typeof(where) _where = where; \
    typeof(error) _error = error; \
    \
    if(_error) { \
        fprintf( \
            stderr, \
            __FILE__ ":%d: %s error (%#x).\n", \
            __LINE__, \
            _where, \
            _error \
        ); \
        \
        exit(-1); \
    } \
})

Fix abort_on_error: Don't forget to exit(-1).


//===--- FSProvider.h - VFS provider for ClangdServer ------------*- C++-*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_FSPROVIDER_H
#define LLVM_CLANG_TOOLS_EXTRA_CLANGD_FSPROVIDER_H

#include "llvm/ADT/IntrusiveRefCntPtr.h"
#include "llvm/Support/VirtualFileSystem.h"

namespace clang {
namespace clangd {

// Wrapper for vfs::FileSystem for use in multithreaded programs like clangd.
// As FileSystem is not threadsafe, concurrent threads must each obtain one.
class FileSystemProvider {
public:
  virtual ~FileSystemProvider() = default;
  /// Called by ClangdServer to obtain a vfs::FileSystem to be used for parsing.
  /// Context::current() will be the context passed to the clang entrypoint,
  /// such as addDocument(), and will also be propagated to result callbacks.
  /// Embedders may use this to isolate filesystem accesses.
  virtual IntrusiveRefCntPtr<llvm::vfs::FileSystem> getFileSystem() const = 0;
};

class RealFileSystemProvider : public FileSystemProvider {
public:
  // FIXME: returns the single real FS instance, which is not threadsafe.
  IntrusiveRefCntPtr<llvm::vfs::FileSystem> getFileSystem() const override {
    return llvm::vfs::getRealFileSystem();
  }
};

} // namespace clangd
} // namespace clang

#endif

//===--- FSProvider.h - VFS provider for ClangdServer ------------*- C++-*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_FSPROVIDER_H
#define LLVM_CLANG_TOOLS_EXTRA_CLANGD_FSPROVIDER_H

#include "llvm/ADT/IntrusiveRefCntPtr.h"
#include "llvm/Support/VirtualFileSystem.h"

namespace clang {
namespace clangd {

// Wrapper for vfs::FileSystem for use in multithreaded programs like clangd.
// As FileSystem is not threadsafe, concurrent threads must each obtain one.
class FileSystemProvider {
public:
  virtual ~FileSystemProvider() = default;
  /// Called by ClangdServer to obtain a vfs::FileSystem to be used for parsing.
  /// Context::current() will be the context passed to the clang entrypoint,
  /// such as addDocument(), and will also be propagated to result callbacks.
  /// Embedders may use this to isolate filesystem accesses.
  virtual llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>
  getFileSystem() const = 0;
};

class RealFileSystemProvider : public FileSystemProvider {
public:
  // FIXME: returns the single real FS instance, which is not threadsafe.
  llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>
  getFileSystem() const override {
    return llvm::vfs::getRealFileSystem();
  }
};

} // namespace clangd
} // namespace clang

#endif

Fix the qualification of `IntrusiveRefCntPtr` to use `llvm::`.

Without this, the code only compiled if the header was included after
something introduced the alias from `clang::` to `llvm::` for this type.
Any modules build would fail here.

git-svn-id: a34e9779ed74578ad5922b3306b3d80a0c825546@344225 91177308-0d34-0410-b5e6-96231b3b80d8


#pragma once

#include <ionGL.h>

typedef ion::GL::Uniform IUniform;

template <typename T>
using CUniformValue = ion::GL::UniformValue<T>;

template <typename T>
using CUniformReference = ion::GL::UniformReference<T>;

typedef ion::GL::VertexBuffer CVertexBuffer;
typedef ion::GL::IndexBuffer CIndexBuffer;

Add typedefs for VertexBuffer, IndexBuffer in GL


// Copyright 2016 Airtame

#ifndef MANAGEDEVICE_LOGGING_ILOGLISTENER_H_
#define MANAGEDEVICE_LOGGING_ILOGLISTENER_H_

#include <string>

// Forward declarations.
enum class ELogLevel;

class ILogListener {
public:
    virtual ~ILogListener() {}
    virtual void Notify(const std::string& iLog, ELogLevel iLevel) = 0;
};

#endif  // MANAGEDEVICE_LOGGING_ILOGLISTENER_H_

// Copyright 2016 Pierre Fourgeaud

#ifndef PF_ILOGLISTENER_H_
#define PF_ILOGLISTENER_H_

#include <string>

// Forward declarations.
enum class ELogLevel;

/**
 * @brief The ILogListener class
 *
 * Define an interface to implement when creating a new LogListener.
 * SimpleLogger provide 3 default listeners: Buffer, File, Console.
 *
 * Implement this class if you want to create your own listener.
 */
class ILogListener {
public:
    /**
     * Virtual destructor.
     */
    virtual ~ILogListener() {}

    /**
     * Pure virtual method to implement when implementing this interface.
     * Method called when getting notified.
     *
     * @params iLog The string representing the messag to log
     * @params iLevel Log level of this message
     */
    virtual void Notify(const std::string& iLog, ELogLevel iLevel) = 0;
};

#endif // PF_ILOGLISTENER_H_

Update ILogListener interface with docs

Update ILogListener interface with docs


#pragma once
#include "Rendering/BufferDX11.h"
#include "Rendering/ShaderDX11.h"

namespace Mile
{
   class MEAPI ConstantBufferDX11 : public BufferDX11
   {
   public:
      ConstantBufferDX11(RendererDX11* renderer);
      ~ConstantBufferDX11();

      bool Init(unsigned int size);

      virtual ERenderResourceType GetResourceType() const override { return ERenderResourceType::ConstantBuffer; }

      virtual void* Map(ID3D11DeviceContext& deviceContext) override;
      virtual bool UnMap(ID3D11DeviceContext& deviceContext) override;

      bool Bind(ID3D11DeviceContext& deviceContext, unsigned int slot, EShaderType shaderType);
      void Unbind(ID3D11DeviceContext& deviceContext);

      FORCEINLINE bool IsBound() const { return m_bIsBound; }
      FORCEINLINE unsigned int GetBoundSlot() const { return m_boundSlot; }
      FORCEINLINE EShaderType GetBoundShaderType() const { return m_boundShader; }

   private:
      bool           m_bIsBound;
      unsigned int   m_boundSlot;
      EShaderType    m_boundShader;

   };
}

#pragma once
#include "Rendering/BufferDX11.h"
#include "Rendering/ShaderDX11.h"

namespace Mile
{
   class MEAPI ConstantBufferDX11 : public BufferDX11
   {
   public:
      ConstantBufferDX11(RendererDX11* renderer);
      ~ConstantBufferDX11();

      bool Init(unsigned int size);
      template <typename Buffer>
      bool Init()
      {
         return Init(sizeof(Buffer));
      }

      virtual ERenderResourceType GetResourceType() const override { return ERenderResourceType::ConstantBuffer; }

      virtual void* Map(ID3D11DeviceContext& deviceContext) override;
      virtual bool UnMap(ID3D11DeviceContext& deviceContext) override;

      bool Bind(ID3D11DeviceContext& deviceContext, unsigned int slot, EShaderType shaderType);
      void Unbind(ID3D11DeviceContext& deviceContext);

      FORCEINLINE bool IsBound() const { return m_bIsBound; }
      FORCEINLINE unsigned int GetBoundSlot() const { return m_boundSlot; }
      FORCEINLINE EShaderType GetBoundShaderType() const { return m_boundShader; }

   private:
      bool           m_bIsBound;
      unsigned int   m_boundSlot;
      EShaderType    m_boundShader;

   };
}

Add template Init method for ConstantBuffer


// Test this without pch.
// RUN: clang-cc -include %S/functions.h -fsyntax-only -verify %s &&

// Test with pch.
// RUN: clang-cc -emit-pch -o %t %S/functions.h &&
// RUN: clang-cc -include-pch %t -fsyntax-only -verify %s

int f0(int x0, int y0, ...) { return x0 + y0; }

float *test_f1(int val, double x, double y) {
  if (val > 5)
    return f1(x, y);
  else
    return f1(x); // expected-error{{too few arguments to function call}}
  return 0;
}

void test_g0(int *x, float * y) {
  g0(y); // expected-warning{{incompatible pointer types passing 'float *', expected 'int *'}}
  g0(x);
}

// Test this without pch.
// RUN: clang-cc -include %S/functions.h -fsyntax-only -verify %s &&

// Test with pch.
// RUN: clang-cc -emit-pch -o %t %S/functions.h &&
// RUN: clang-cc -include-pch %t -fsyntax-only -verify %s

int f0(int x0, int y0, ...) { return x0 + y0; }

float *test_f1(int val, double x, double y) {
  if (val > 5)
    return f1(x, y);
  else
    return f1(x); // expected-error{{too few arguments to function call}}
}

void test_g0(int *x, float * y) {
  g0(y); // expected-warning{{incompatible pointer types passing 'float *', expected 'int *'}}
  g0(x);
}

Revert this, we can now avoid error cascades better.

git-svn-id: ffe668792ed300d6c2daa1f6eba2e0aa28d7ec6c@76691 91177308-0d34-0410-b5e6-96231b3b80d8


/* SPDX-License-Identifier: BSD-2-Clause */

/*
 * This is a TEMPLATE. The actual config file is generated by CMake and stored
 * in <BUILD_DIR>/tilck_gen_headers/.
 */

#pragma once
#include <tilck_gen_headers/config_global.h>

/* --------- Boolean config variables --------- */

#cmakedefine01 KMALLOC_FREE_MEM_POISONING
#cmakedefine01 KMALLOC_HEAVY_STATS
#cmakedefine01 KMALLOC_SUPPORT_DEBUG_LOG
#cmakedefine01 KMALLOC_SUPPORT_LEAK_DETECTOR

/*
 * --------------------------------------------------------------------------
 *                  Hard-coded global & derived constants
 * --------------------------------------------------------------------------
 *
 * Here below there are many dervied constants and convenience constants like
 * COMPILER_NAME along with some pseudo-constants like USERMODE_VADDR_END not
 * designed to be easily changed because of the code makes assumptions about
 * them. Because of that, those constants are hard-coded and not available as
 * CMake variables. With time, some of those constants get "promoted" and moved
 * in CMake, others remain here. See the comments and think about the potential
 * implications before promoting a hard-coded constant to a configurable CMake
 * variable.
 */

#if !KERNEL_GCOV
   #define KMALLOC_FIRST_HEAP_SIZE    ( 128 * KB)
#else
   #define KMALLOC_FIRST_HEAP_SIZE    ( 512 * KB)
#endif

/* SPDX-License-Identifier: BSD-2-Clause */

/*
 * This is a TEMPLATE. The actual config file is generated by CMake and stored
 * in <BUILD_DIR>/tilck_gen_headers/.
 */

#pragma once
#include <tilck_gen_headers/config_global.h>

/* --------- Boolean config variables --------- */

#cmakedefine01 KMALLOC_FREE_MEM_POISONING
#cmakedefine01 KMALLOC_HEAVY_STATS
#cmakedefine01 KMALLOC_SUPPORT_DEBUG_LOG
#cmakedefine01 KMALLOC_SUPPORT_LEAK_DETECTOR

/*
 * --------------------------------------------------------------------------
 *                  Hard-coded global & derived constants
 * --------------------------------------------------------------------------
 *
 * Here below there are many dervied constants and convenience constants like
 * COMPILER_NAME along with some pseudo-constants like USERMODE_VADDR_END not
 * designed to be easily changed because of the code makes assumptions about
 * them. Because of that, those constants are hard-coded and not available as
 * CMake variables. With time, some of those constants get "promoted" and moved
 * in CMake, others remain here. See the comments and think about the potential
 * implications before promoting a hard-coded constant to a configurable CMake
 * variable.
 */

#if KERNEL_MAX_SIZE <= 1024 * KB
   #define KMALLOC_FIRST_HEAP_SIZE    ( 128 * KB)
#else
   #define KMALLOC_FIRST_HEAP_SIZE    ( 512 * KB)
#endif

[config] Make KMALLOC_FIRST_HEAP_SIZE depend on KERNEL_MAX_SIZE


// actions:
//
// * read from queue
// * read from array
// * write to queue
// * write to array
// * stop action (with and/or without time?)
// * query xrun stats etc.
// timestamp! start, duration (number of samples? unlimited?)
// return values: actual start, actual duration (number of samples?)
//   queue usage: store smallest available write/read size
//   xruns during the runtime of the current action
//
// if queue is empty/full, stop playback/recording

enum actiontype
{
  PLAY_BUFFER,
  PLAY_RINGBUFFER,
  RECORD_BUFFER,
  RECORD_RINGBUFFER,
};

struct action
{
  enum actiontype actiontype;
  struct action* next;
  union {
    float* buffer;
    PaUtilRingBuffer* ringbuffer;
  };
  unsigned long total_frames;
  unsigned long done_frames;
  // TODO: channel mapping (pointer to list of channels + length)
  // TODO: something to store the result of the action?
};

struct state
{
  int input_channels;
  int output_channels;
  PaUtilRingBuffer* action_q;  // Queue for incoming commands
  PaUtilRingBuffer* result_q;  // Queue for results and command disposal
  struct action* actions;  // Singly linked list of actions
};

int callback(const void* input, void* output, unsigned long frames
  , const PaStreamCallbackTimeInfo* time, PaStreamCallbackFlags status
  , void* userdata);

// actions:
//
// * read from queue
// * read from array
// * write to queue
// * write to array
// * stop action (with and/or without time?)
// * query xrun stats etc.
// timestamp! start, duration (number of samples? unlimited?)
// return values: actual start, actual duration (number of samples?)
//   queue usage: store smallest available write/read size
//   xruns during the runtime of the current action
//
// if queue is empty/full, stop playback/recording

enum actiontype
{
  PLAY_BUFFER,
  PLAY_RINGBUFFER,
  RECORD_BUFFER,
  RECORD_RINGBUFFER,
};

struct action
{
  const enum actiontype actiontype;
  struct action* next;
  union {
    float* const buffer;
    PaUtilRingBuffer* const ringbuffer;
  };
  const unsigned long total_frames;
  unsigned long done_frames;
  // TODO: channel mapping (pointer to list of channels + length)
  // TODO: something to store the result of the action?
};

struct state
{
  const int input_channels;
  const int output_channels;
  PaUtilRingBuffer* const action_q;  // Queue for incoming commands
  PaUtilRingBuffer* const result_q;  // Queue for results and command disposal
  struct action* actions;  // Singly linked list of actions
};

int callback(const void* input, void* output, unsigned long frames
  , const PaStreamCallbackTimeInfo* time, PaStreamCallbackFlags status
  , void* userdata);

Use const for struct members

Use const for struct members


/*
    Telepathy error dictionary - usable strings for dbus messages
    Copyright (C) 2011  Martin Klapetek <martin.klapetek@gmail.com>

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
*/

#ifndef ERROR_DICTIONARY_H
#define ERROR_DICTIONARY_H

#include <QString>

#include <KTp/ktp-export.h>

namespace KTp
{
namespace ErrorDictionary
{
    ///Returns a verbose error message usable for displaying to the user
    KTP_EXPORT QString displayVerboseErrorMessage(const QString& dbusErrorName);

    ///Returns a short error message usable for little space
    KTP_EXPORT QString displayShortErrorMessage(const QString& dbusErrorName);
}
}

#endif // ERROR_DICTIONARY_H

/*
    Telepathy error dictionary - usable strings for dbus messages
    Copyright (C) 2011  Martin Klapetek <martin.klapetek@gmail.com>

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
*/

#ifndef ERROR_DICTIONARY_H
#define ERROR_DICTIONARY_H

#include <QString>

#include <KTp/ktp-export.h>

namespace KTp
{
/**
 * @short A method of turning error codes into human readable strings
 *
 */
namespace ErrorDictionary
{
    /**Returns a verbose error message suitable for displaying to the user
        @param dbusErrorName The Telepathy error as specified in http://telepathy.freedesktop.org/spec/errors.html
     */
    KTP_EXPORT QString displayVerboseErrorMessage(const QString& dbusErrorName);

    /**Returns a short error message suitable when there is little space
        @param dbusErrorName The Telepathy error as specified in http://telepathy.freedesktop.org/spec/errors.html
     */
    KTP_EXPORT QString displayShortErrorMessage(const QString& dbusErrorName);
}
}

#endif // ERROR_DICTIONARY_H

Add documentation to Error Dictionary class

Reviewed-by: Martin Klapetek