When you stay at this apartment in Simpson Bay, you'll be in the entertainment district, within a 15-minute drive of Maho Beach and American University of the Caribbean. This beach apartment is 9 mi (14.5 km) from Orient Bay Beach and 4.9 mi (7.9 km) from Happy Bay.
Make yourself comfortable in this air-conditioned apartment, featuring a kitchen with a full-sized refrigerator/freezer and a stovetop. There's a private patio. Complimentary wireless Internet access keeps you connected, and cable programming is available for your entertainment. Conveniences include a phone, as well as complimentary newspapers and a separate sitting area.
Take advantage of recreation opportunities such as an outdoor pool, or other amenities including complimentary wireless Internet access and tour/ticket assistance. Additional features at this apartment include barbecue grills and discounted use of a nearby fitness facility.
Featured amenities include complimentary newspapers in the lobby, dry cleaning/laundry services, and a library. Free self parking is available onsite.
The preferred airport for this apartment is Philipsburg (SXM-Princess Juliana Intl.).
If you are planning to arrive after 5 PM please contact the property at least 72 hours in advance using the information on the booking confirmation.


text:
Lincoln Park boys' basketball topples Taylor…
Alex Muller – For MediaNews Group
Lincoln Park's Luchie Carpenter heads down the court on Friday night during his team's matchup with visiting Taylor High. Carpenter and the Railsplitters defeated the Griffins by a score of 52-36. (Alex Muller – For MediaNews Group)
PUBLISHED: January 16, 2022 at 11:30 a.m. | UPDATED: January 16, 2022 at 2:42 p.m.
A big-time boys' basketball matchup in the Downriver League took place on Friday as Taylor High traveled to Lincoln Park. Albeit still early in the season, both teams entered the contest as the last two remaining undefeated teams in the league.
Taylor High at Lincoln Park boys' basketball photo gallery
A strong finish down the stretch allowed for the host Railsplitters to pull away and pick up the 52-36 win over the Griffins.
Lincoln Park (4-2, 4-0 DRL) has now won three in a row following a 1-2 start to the season. The Rails have not won three consecutive games in a season since doing so two separate times back in 2017-18. They've also already surpassed their win total from all of last season (3-12).
"Our defensive intensity was off the charts tonight," said Rails coach Brian Starll. "The kids are really starting to buy in. We're getting strings of stops when we need them and making it hard for teams to score on us.
"We want to creep out and press more but when these kids buy in, we're a tough team to beat."
It was a defensive-minded low-scoring affair throughout much of the game, especially early on. The two teams traded buckets for most of the first half before Lincoln Park was able to create some separation, carrying a 22-17 lead into halftime.
Taylor (4-3, 3-1 DRL) came out of the break with some urgency, making a couple quick buckets. But the hosts were able to weather that brief storm and regain control.
Alex Muller - For MediaNews Group
Taylor High's Tayshawn Robinson (21) drives toward the basket against Zaire Williams of host Lincoln Park on Friday night. The visiting Griffins ultimately fell to the Railsplitters by a score of 52-36. (Alex Muller – For MediaNews Group)
Lincoln Park ultimately ended up outscoring the Griffins 30-19 in the second half.
"At the end there we tried to press them a little harder," said Taylor coach Chris Simons. "It's something we maybe should've done earlier in the game. We had a couple kids still banged up from Wednesday who are probably still feeling it. But we got to fight through it."
"I knew it was going to be tough," Simons added. "Especially coming here, every year (Lincoln Park) always plays us tough."
It's now back-to-back losses for the Griffins following a four-game win streak. Simons considers this mini slide a good "growing experience" for his team in both the short term and the long run.
"We have to play the way we want to play," he said. "These kids have to learn life lessons. I try to help prepare these kids for life after basketball. You're going to lose games and sometimes get your a** kicked and have to learn to live with that too.
"I got to find a way to teach them that other gear (of being aggressive)," Simons added. "They always say you can't teach speed or teach strength. They never talk about teaching a kid to be aggressive, taking that nice kid and turning him to the point where he has no problem putting a body on someone.
"We're a young team in that aspect."
Defensively, Lincoln Park has given up 40 points or fewer during its current win streak after allowing on average just over 50 points in their first three contests.
That's the one area of Starll's team that has impressed him the most. He is also well aware that there is a lot of basketball left, including rematches with Taylor and Woodhaven.
"It's always important to stay ahead of Woodhaven," Starll said. "We know they're the team to beat and have been for a while now. We know we're going to have to go to Taylor and Woodhaven so we just have to keep getting better each game and cross those bridges when we get there."
Six different players scored for Lincoln Park on Friday. Malik McKinney led the way with a game-high 16 points, 10 of which came after halftime. C.J. Thomas joined McKinney in double-figures with 12 points. He too did most of his work in the second half with 10 in the third and fourth quarters.
The Rails also got each from Dwaine Watkins and Luchie Carpenter.
For Taylor, Tayshawn Robinson and Ethan Norman each had 10 points on the night. Brian Twyman had six points while Jayden Cleveland and Marquis Clark each had four points.
There were three other games around the DRL on Friday. Woodhaven earned its third consecutive victory, winning 72-50 at Gibraltar Carlson. Edsel Ford picked up a 62-53 win at home against Southgate Anderson and Allen Park picked up its first conference win of 2021-21 with a 58-54 victory over Wyandotte Roosevelt.
Trenton was off on Friday.
Here is a look at the updated league standings following Friday's results around the league (*denotes head-to-head tiebreaker):
1) Lincoln Park (4-2, 4-0 DRL)
2) Woodhaven (6-2, 4-1)
3) Taylor (4-3, 3-1)*
4) Edsel Ford (4-4, 3-1)
5) Carlson (4-5, 2-3)
6) Trenton (1-5, 1-2)
7) Allen Park (2-4, 1-3)
8) Roosevelt (3-5, 1-4)
9) Anderson (1-6, 0-4)
Taylor on Tuesday, Jan. 18 will return home to host Wyandotte Roosevelt at 7 p.m. before visiting Anderson on Jan. 21 at 7 p.m. Lincoln Park meanwhile won't return to game action until Jan. 21 when it visits Roosevelt at 6 p.m.
The Rails and Griffins won't meet again until Feb. 18 at Taylor in what will be a 7 p.m. tipoff.
Edsel Ford boys' basketball outlasts Southgate Anderson w/ PHOTO GALLERY
Allen Park, Gibraltar Carlson finish 2-0 at Downriver League quad meet w/ PHOTO GALLERY
Southgate Anderson at Edsel Ford boys' basketball photo gallery
Gibraltar Carlson at Woodhaven girls' basketball photo gallery

redpajama_set_name: RedPajamaCommonCrawl


Voskehat mimiloves livejasmin. DarioVT. Hornyrebels69. anabellacute.
SharaxSexyJessicaFondboy2118CharlotteLive .SoIrresistibleCherryLoveToyboyTiffanySmithPuffy28 .CuteBoyFun1SonyaDivaRipeAppleXTWOSelfSucker .SoIrresistibleglowgellaValeryBloom4uArtyHot .IEmaZackLoveLuckya0CutieAlishaCuteBoyFun1 .Puffy28LexyCoxNissyyAngelinaFaery .NumiRebeccaClarkbigfatcock9xLexyCox .MartinaFoxLindaShayCurmNeroSoftRoseFlower .PureVegaAngelinaFaeryHornyrebels69KimmTaylor .glowgellaEmilieTaylorDarioVToldmanlover69 .DaisyDivaPrettyWendyCutieOlivineSarahKeller .
TynaPearlBustyAnnaXXXXBustyAnaMidnightQUEENS .astudboy2hardxAsiaMixPuffy28TwisterBoy .sexycookbigsincynthWendyMellowLegendaryLea .TwisterBoyAdonissXavierOgEmpressXMaggiHot .MidnightQUEENSKimaMelsSoftRoseFlowerBustyAnnaXXXX .SharaxSexySilkenBodySexxySalmaZackLoveLucky .CuteBoyFun1xTSslutANGELAxLegendaryLeaSexxySalma .MartinaFoxMidnightQUEENSBustyAnnaXXXXnatygatylatina .CurmNeroLegendaryLeaMaggiHotAdonissXavier .GingerKitten676DarioVTMollysChamberXKimaMels .IsabelleboilerNumiRipeAppleXAngelinaFaery .


text:
Wireless Smartphone Charging Coming To Cars
by Stephen SchenckDecember 20, 2012 2:29 pm
OK, now we're starting to get somewhere: wireless charging has struggled to make the case for why it's so superior to plug-in charging, but word that the first automobiles with factory-installed Qi-compatible charging stations are on their way may have you beginning to see the light.
As part of an optional "technology package", including other high-tech options like a radar-based cruise control, Toyota will be outfitting its 2013 Avalon Limited and Hybrid Limited models with a wireless charging dock. Since it's all built in to the vehicle's console, this really is starting to seem like a fully-wireless solution.
Unfortunately, it's still part of a very expensive ($1750) option package, and these aren't cheap cars to begin with, but we dig the initiative; just hop in the car and drop your phone above the shifter, no docks to seat, no wires to fiddle with.
Maybe someday, wireless charging will have the kind of range where the car's entire cabin will act as a wireless charging zone, but this is a nice start. Besides Toyota, Chrysler also plans to offer a wireless charging option on its 2013 Dodge Dart, but there are still some questions about its compatibility, and whether it will really be fully-integrated like Toyota's.
Source: CNET
Via: phoneArena
charging, News, wireless
Stephen Schenck
Stephen has been writing about electronics since 2008, which only serves to frustrate him that he waited so long to combine his love of gadgets and his degree in writing. In his spare time, he collects console and arcade game hardware, is a motorcycle enthusiast, and enjoys trapping blue crabs. Stephen's first mobile device was a 624 MHz Dell Axim X30, which he's convinced is still a viable platform. Stephen longs for a market where phones are sold independently of service, and bandwidth is cheap and plentiful; he's not holding his breath. In the meantime, he devours smartphone news and tries to sort out the juicy bits Read more about Stephen Schenck!


text:
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/highmem.h>
#include <linux/pci.h>
#include <linux/interrupt.h>
#include <linux/kmod.h>
#include <linux/delay.h>
#include <linux/workqueue.h>
#include <linux/nmi.h>
#include <linux/acpi.h>
#include <linux/acpi_io.h>
#include <linux/efi.h>
#include <linux/ioport.h>
#include <linux/list.h>
#include <linux/jiffies.h>
#include <linux/semaphore.h>

#include <asm/io.h>
#include <asm/uaccess.h>

#include <acpi/acpi.h>
#include <acpi/acpi_bus.h>
#include <acpi/processor.h>

#define _COMPONENT		ACPI_OS_SERVICES
ACPI_MODULE_NAME("osl");
#define PREFIX		"ACPI: "
struct acpi_os_dpc {
	acpi_osd_exec_callback function;
	void *context;
	struct work_struct work;
	int wait;
};

#ifdef CONFIG_ACPI_CUSTOM_DSDT
#include CONFIG_ACPI_CUSTOM_DSDT_FILE
#endif

#ifdef ENABLE_DEBUGGER
#include <linux/kdb.h>

/* stuff for debugger support */
int acpi_in_debugger;
EXPORT_SYMBOL(acpi_in_debugger);

extern char line_buf[80];
#endif				/*ENABLE_DEBUGGER */

static int (*__acpi_os_prepare_sleep)(u8 sleep_state, u32 pm1a_ctrl,
				      u32 pm1b_ctrl);

static acpi_osd_handler acpi_irq_handler;
static void *acpi_irq_context;
static struct workqueue_struct *kacpid_wq;
static struct workqueue_struct *kacpi_notify_wq;
struct workqueue_struct *kacpi_hotplug_wq;
EXPORT_SYMBOL(kacpi_hotplug_wq);

/*
 * This list of permanent mappings is for memory that may be accessed from
 * interrupt context, where we can't do the ioremap().
 */
struct acpi_ioremap {
	struct list_head list;
	void __iomem *virt;
	acpi_physical_address phys;
	acpi_size size;
	unsigned long refcount;
};

static LIST_HEAD(acpi_ioremaps);
static DEFINE_MUTEX(acpi_ioremap_lock);

static void __init acpi_osi_setup_late(void);

/*
 * The story of _OSI(Linux)
 *
 * From pre-history through Linux-2.6.22,
 * Linux responded TRUE upon a BIOS OSI(Linux) query.
 *
 * Unfortunately, reference BIOS writers got wind of this
 * and put OSI(Linux) in their example code, quickly exposing
 * this string as ill-conceived and opening the door to
 * an un-bounded number of BIOS incompatibilities.
 *
 * For example, OSI(Linux) was used on resume to re-POST a
 * video card on one system, because Linux at that time
 * could not do a speedy restore in its native driver.
 * But then upon gaining quick native restore capability,
 * Linux has no way to tell the BIOS to skip the time-consuming
 * POST -- putting Linux at a permanent performance disadvantage.
 * On another system, the BIOS writer used OSI(Linux)
 * to infer native OS support for IPMI!  On other systems,
 * OSI(Linux) simply got in the way of Linux claiming to
 * be compatible with other operating systems, exposing
 * BIOS issues such as skipped device initialization.
 *
 * So "Linux" turned out to be a really poor chose of
 * OSI string, and from Linux-2.6.23 onward we respond FALSE.
 *
 * BIOS writers should NOT query _OSI(Linux) on future systems.
 * Linux will complain on the console when it sees it, and return FALSE.
 * To get Linux to return TRUE for your system  will require
 * a kernel source update to add a DMI entry,
 * or boot with "acpi_osi=Linux"
 */

static struct osi_linux {
	unsigned int	enable:1;
	unsigned int	dmi:1;
	unsigned int	cmdline:1;
} osi_linux = {0, 0, 0};

static u32 acpi_osi_handler(acpi_string interface, u32 supported)
{
	if (!strcmp("Linux", interface)) {

		printk_once(KERN_NOTICE FW_BUG PREFIX
			"BIOS _OSI(Linux) query %s%s\n",
			osi_linux.enable ? "honored" : "ignored",
			osi_linux.cmdline ? " via cmdline" :
			osi_linux.dmi ? " via DMI" : "");
	}

	return supported;
}

static void __init acpi_request_region (struct acpi_generic_address *gas,
	unsigned int length, char *desc)
{
	u64 addr;

	/* Handle possible alignment issues */
	memcpy(&addr, &gas->address, sizeof(addr));
	if (!addr || !length)
		return;

	/* Resources are never freed */
	if (gas->space_id == ACPI_ADR_SPACE_SYSTEM_IO)
		request_region(addr, length, desc);
	else if (gas->space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY)
		request_mem_region(addr, length, desc);
}

static int __init acpi_reserve_resources(void)
{
	acpi_request_region(&acpi_gbl_FADT.xpm1a_event_block, acpi_gbl_FADT.pm1_event_length,
		"ACPI PM1a_EVT_BLK");

	acpi_request_region(&acpi_gbl_FADT.xpm1b_event_block, acpi_gbl_FADT.pm1_event_length,
		"ACPI PM1b_EVT_BLK");

	acpi_request_region(&acpi_gbl_FADT.xpm1a_control_block, acpi_gbl_FADT.pm1_control_length,
		"ACPI PM1a_CNT_BLK");

	acpi_request_region(&acpi_gbl_FADT.xpm1b_control_block, acpi_gbl_FADT.pm1_control_length,
		"ACPI PM1b_CNT_BLK");

	if (acpi_gbl_FADT.pm_timer_length == 4)
		acpi_request_region(&acpi_gbl_FADT.xpm_timer_block, 4, "ACPI PM_TMR");

	acpi_request_region(&acpi_gbl_FADT.xpm2_control_block, acpi_gbl_FADT.pm2_control_length,
		"ACPI PM2_CNT_BLK");

	/* Length of GPE blocks must be a non-negative multiple of 2 */

	if (!(acpi_gbl_FADT.gpe0_block_length & 0x1))
		acpi_request_region(&acpi_gbl_FADT.xgpe0_block,
			       acpi_gbl_FADT.gpe0_block_length, "ACPI GPE0_BLK");

	if (!(acpi_gbl_FADT.gpe1_block_length & 0x1))
		acpi_request_region(&acpi_gbl_FADT.xgpe1_block,
			       acpi_gbl_FADT.gpe1_block_length, "ACPI GPE1_BLK");

	return 0;
}
device_initcall(acpi_reserve_resources);

void acpi_os_printf(const char *fmt, ...)
{
	va_list args;
	va_start(args, fmt);
	acpi_os_vprintf(fmt, args);
	va_end(args);
}

void acpi_os_vprintf(const char *fmt, va_list args)
{
	static char buffer[512];

	vsprintf(buffer, fmt, args);

#ifdef ENABLE_DEBUGGER
	if (acpi_in_debugger) {
		kdb_printf("%s", buffer);
	} else {
		printk(KERN_CONT "%s", buffer);
	}
#else
	printk(KERN_CONT "%s", buffer);
#endif
}

#ifdef CONFIG_KEXEC
static unsigned long acpi_rsdp;
static int __init setup_acpi_rsdp(char *arg)
{
	acpi_rsdp = simple_strtoul(arg, NULL, 16);
	return 0;
}
early_param("acpi_rsdp", setup_acpi_rsdp);
#endif

acpi_physical_address __init acpi_os_get_root_pointer(void)
{
#ifdef CONFIG_KEXEC
	if (acpi_rsdp)
		return acpi_rsdp;
#endif

	if (efi_enabled(EFI_CONFIG_TABLES)) {
		if (efi.acpi20 != EFI_INVALID_TABLE_ADDR)
			return efi.acpi20;
		else if (efi.acpi != EFI_INVALID_TABLE_ADDR)
			return efi.acpi;
		else {
			printk(KERN_ERR PREFIX
			       "System description tables not found\n");
			return 0;
		}
	} else {
		acpi_physical_address pa = 0;

		acpi_find_root_pointer(&pa);
		return pa;
	}
}

/* Must be called with 'acpi_ioremap_lock' or RCU read lock held. */
static struct acpi_ioremap *
acpi_map_lookup(acpi_physical_address phys, acpi_size size)
{
	struct acpi_ioremap *map;

	list_for_each_entry_rcu(map, &acpi_ioremaps, list)
		if (map->phys <= phys &&
		    phys + size <= map->phys + map->size)
			return map;

	return NULL;
}

/* Must be called with 'acpi_ioremap_lock' or RCU read lock held. */
static void __iomem *
acpi_map_vaddr_lookup(acpi_physical_address phys, unsigned int size)
{
	struct acpi_ioremap *map;

	map = acpi_map_lookup(phys, size);
	if (map)
		return map->virt + (phys - map->phys);

	return NULL;
}

void __iomem *acpi_os_get_iomem(acpi_physical_address phys, unsigned int size)
{
	struct acpi_ioremap *map;
	void __iomem *virt = NULL;

	mutex_lock(&acpi_ioremap_lock);
	map = acpi_map_lookup(phys, size);
	if (map) {
		virt = map->virt + (phys - map->phys);
		map->refcount++;
	}
	mutex_unlock(&acpi_ioremap_lock);
	return virt;
}
EXPORT_SYMBOL_GPL(acpi_os_get_iomem);

/* Must be called with 'acpi_ioremap_lock' or RCU read lock held. */
static struct acpi_ioremap *
acpi_map_lookup_virt(void __iomem *virt, acpi_size size)
{
	struct acpi_ioremap *map;

	list_for_each_entry_rcu(map, &acpi_ioremaps, list)
		if (map->virt <= virt &&
		    virt + size <= map->virt + map->size)
			return map;

	return NULL;
}

#ifndef CONFIG_IA64
#define should_use_kmap(pfn)   page_is_ram(pfn)
#else
/* ioremap will take care of cache attributes */
#define should_use_kmap(pfn)   0
#endif

static void __iomem *acpi_map(acpi_physical_address pg_off, unsigned long pg_sz)
{
	unsigned long pfn;

	pfn = pg_off >> PAGE_SHIFT;
	if (should_use_kmap(pfn)) {
		if (pg_sz > PAGE_SIZE)
			return NULL;
		return (void __iomem __force *)kmap(pfn_to_page(pfn));
	} else
		return acpi_os_ioremap(pg_off, pg_sz);
}

static void acpi_unmap(acpi_physical_address pg_off, void __iomem *vaddr)
{
	unsigned long pfn;

	pfn = pg_off >> PAGE_SHIFT;
	if (should_use_kmap(pfn))
		kunmap(pfn_to_page(pfn));
	else
		iounmap(vaddr);
}

void __iomem *__init_refok
acpi_os_map_memory(acpi_physical_address phys, acpi_size size)
{
	struct acpi_ioremap *map;
	void __iomem *virt;
	acpi_physical_address pg_off;
	acpi_size pg_sz;

	if (phys > ULONG_MAX) {
		printk(KERN_ERR PREFIX "Cannot map memory that high\n");
		return NULL;
	}

	if (!acpi_gbl_permanent_mmap)
		return __acpi_map_table((unsigned long)phys, size);

	mutex_lock(&acpi_ioremap_lock);
	/* Check if there's a suitable mapping already. */
	map = acpi_map_lookup(phys, size);
	if (map) {
		map->refcount++;
		goto out;
	}

	map = kzalloc(sizeof(*map), GFP_KERNEL);
	if (!map) {
		mutex_unlock(&acpi_ioremap_lock);
		return NULL;
	}

	pg_off = round_down(phys, PAGE_SIZE);
	pg_sz = round_up(phys + size, PAGE_SIZE) - pg_off;
	virt = acpi_map(pg_off, pg_sz);
	if (!virt) {
		mutex_unlock(&acpi_ioremap_lock);
		kfree(map);
		return NULL;
	}

	INIT_LIST_HEAD(&map->list);
	map->virt = virt;
	map->phys = pg_off;
	map->size = pg_sz;
	map->refcount = 1;

	list_add_tail_rcu(&map->list, &acpi_ioremaps);

 out:
	mutex_unlock(&acpi_ioremap_lock);
	return map->virt + (phys - map->phys);
}
EXPORT_SYMBOL_GPL(acpi_os_map_memory);

static void acpi_os_drop_map_ref(struct acpi_ioremap *map)
{
	if (!--map->refcount)
		list_del_rcu(&map->list);
}

static void acpi_os_map_cleanup(struct acpi_ioremap *map)
{
	if (!map->refcount) {
		synchronize_rcu();
		acpi_unmap(map->phys, map->virt);
		kfree(map);
	}
}

void __ref acpi_os_unmap_memory(void __iomem *virt, acpi_size size)
{
	struct acpi_ioremap *map;

	if (!acpi_gbl_permanent_mmap) {
		__acpi_unmap_table(virt, size);
		return;
	}

	mutex_lock(&acpi_ioremap_lock);
	map = acpi_map_lookup_virt(virt, size);
	if (!map) {
		mutex_unlock(&acpi_ioremap_lock);
		WARN(true, PREFIX "%s: bad address %p\n", __func__, virt);
		return;
	}
	acpi_os_drop_map_ref(map);
	mutex_unlock(&acpi_ioremap_lock);

	acpi_os_map_cleanup(map);
}
EXPORT_SYMBOL_GPL(acpi_os_unmap_memory);

void __init early_acpi_os_unmap_memory(void __iomem *virt, acpi_size size)
{
	if (!acpi_gbl_permanent_mmap)
		__acpi_unmap_table(virt, size);
}

int acpi_os_map_generic_address(struct acpi_generic_address *gas)
{
	u64 addr;
	void __iomem *virt;

	if (gas->space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY)
		return 0;

	/* Handle possible alignment issues */
	memcpy(&addr, &gas->address, sizeof(addr));
	if (!addr || !gas->bit_width)
		return -EINVAL;

	virt = acpi_os_map_memory(addr, gas->bit_width / 8);
	if (!virt)
		return -EIO;

	return 0;
}
EXPORT_SYMBOL(acpi_os_map_generic_address);

void acpi_os_unmap_generic_address(struct acpi_generic_address *gas)
{
	u64 addr;
	struct acpi_ioremap *map;

	if (gas->space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY)
		return;

	/* Handle possible alignment issues */
	memcpy(&addr, &gas->address, sizeof(addr));
	if (!addr || !gas->bit_width)
		return;

	mutex_lock(&acpi_ioremap_lock);
	map = acpi_map_lookup(addr, gas->bit_width / 8);
	if (!map) {
		mutex_unlock(&acpi_ioremap_lock);
		return;
	}
	acpi_os_drop_map_ref(map);
	mutex_unlock(&acpi_ioremap_lock);

	acpi_os_map_cleanup(map);
}
EXPORT_SYMBOL(acpi_os_unmap_generic_address);

#ifdef ACPI_FUTURE_USAGE
acpi_status
acpi_os_get_physical_address(void *virt, acpi_physical_address * phys)
{
	if (!phys || !virt)
		return AE_BAD_PARAMETER;

	*phys = virt_to_phys(virt);

	return AE_OK;
}
#endif

#define ACPI_MAX_OVERRIDE_LEN 100

static char acpi_os_name[ACPI_MAX_OVERRIDE_LEN];

acpi_status
acpi_os_predefined_override(const struct acpi_predefined_names *init_val,
			    acpi_string * new_val)
{
	if (!init_val || !new_val)
		return AE_BAD_PARAMETER;

	*new_val = NULL;
	if (!memcmp(init_val->name, "_OS_", 4) && strlen(acpi_os_name)) {
		printk(KERN_INFO PREFIX "Overriding _OS definition to '%s'\n",
		       acpi_os_name);
		*new_val = acpi_os_name;
	}

	return AE_OK;
}

acpi_status
acpi_os_table_override(struct acpi_table_header * existing_table,
		       struct acpi_table_header ** new_table)
{
	if (!existing_table || !new_table)
		return AE_BAD_PARAMETER;

	*new_table = NULL;

#ifdef CONFIG_ACPI_CUSTOM_DSDT
	if (strncmp(existing_table->signature, "DSDT", 4) == 0)
		*new_table = (struct acpi_table_header *)AmlCode;
#endif
	if (*new_table != NULL) {
		printk(KERN_WARNING PREFIX "Override [%4.4s-%8.8s], "
			   "this is unsafe: tainting kernel\n",
		       existing_table->signature,
		       existing_table->oem_table_id);
		add_taint(TAINT_OVERRIDDEN_ACPI_TABLE);
	}
	return AE_OK;
}

acpi_status
acpi_os_physical_table_override(struct acpi_table_header *existing_table,
				acpi_physical_address * new_address,
				u32 *new_table_length)
{
	return AE_SUPPORT;
}

static irqreturn_t acpi_irq(int irq, void *dev_id)
{
	u32 handled;

	handled = (*acpi_irq_handler) (acpi_irq_context);

	if (handled) {
		acpi_irq_handled++;
		return IRQ_HANDLED;
	} else {
		acpi_irq_not_handled++;
		return IRQ_NONE;
	}
}

acpi_status
acpi_os_install_interrupt_handler(u32 gsi, acpi_osd_handler handler,
				  void *context)
{
	unsigned int irq;

	acpi_irq_stats_init();

	/*
	 * ACPI interrupts different from the SCI in our copy of the FADT are
	 * not supported.
	 */
	if (gsi != acpi_gbl_FADT.sci_interrupt)
		return AE_BAD_PARAMETER;

	if (acpi_irq_handler)
		return AE_ALREADY_ACQUIRED;

	if (acpi_gsi_to_irq(gsi, &irq) < 0) {
		printk(KERN_ERR PREFIX "SCI (ACPI GSI %d) not registered\n",
		       gsi);
		return AE_OK;
	}

	acpi_irq_handler = handler;
	acpi_irq_context = context;
	if (request_irq(irq, acpi_irq, IRQF_SHARED, "acpi", acpi_irq)) {
		printk(KERN_ERR PREFIX "SCI (IRQ%d) allocation failed\n", irq);
		acpi_irq_handler = NULL;
		return AE_NOT_ACQUIRED;
	}

	return AE_OK;
}

acpi_status acpi_os_remove_interrupt_handler(u32 irq, acpi_osd_handler handler)
{
	if (irq != acpi_gbl_FADT.sci_interrupt)
		return AE_BAD_PARAMETER;

	free_irq(irq, acpi_irq);
	acpi_irq_handler = NULL;

	return AE_OK;
}

/*
 * Running in interpreter thread context, safe to sleep
 */

void acpi_os_sleep(u64 ms)
{
	schedule_timeout_interruptible(msecs_to_jiffies(ms));
}

void acpi_os_stall(u32 us)
{
	while (us) {
		u32 delay = 1000;

		if (delay > us)
			delay = us;
		udelay(delay);
		touch_nmi_watchdog();
		us -= delay;
	}
}

/*
 * Support ACPI 3.0 AML Timer operand
 * Returns 64-bit free-running, monotonically increasing timer
 * with 100ns granularity
 */
u64 acpi_os_get_timer(void)
{
	static u64 t;

#ifdef	CONFIG_HPET
	/* TBD: use HPET if available */
#endif

#ifdef	CONFIG_X86_PM_TIMER
	/* TBD: default to PM timer if HPET was not available */
#endif
	if (!t)
		printk(KERN_ERR PREFIX "acpi_os_get_timer() TBD\n");

	return ++t;
}

acpi_status acpi_os_read_port(acpi_io_address port, u32 * value, u32 width)
{
	u32 dummy;

	if (!value)
		value = &dummy;

	*value = 0;
	if (width <= 8) {
		*(u8 *) value = inb(port);
	} else if (width <= 16) {
		*(u16 *) value = inw(port);
	} else if (width <= 32) {
		*(u32 *) value = inl(port);
	} else {
		BUG();
	}

	return AE_OK;
}

EXPORT_SYMBOL(acpi_os_read_port);

acpi_status acpi_os_write_port(acpi_io_address port, u32 value, u32 width)
{
	if (width <= 8) {
		outb(value, port);
	} else if (width <= 16) {
		outw(value, port);
	} else if (width <= 32) {
		outl(value, port);
	} else {
		BUG();
	}

	return AE_OK;
}

EXPORT_SYMBOL(acpi_os_write_port);

#ifdef readq
static inline u64 read64(const volatile void __iomem *addr)
{
	return readq(addr);
}
#else
static inline u64 read64(const volatile void __iomem *addr)
{
	u64 l, h;
	l = readl(addr);
	h = readl(addr+4);
	return l | (h << 32);
}
#endif

acpi_status
acpi_os_read_memory(acpi_physical_address phys_addr, u64 *value, u32 width)
{
	void __iomem *virt_addr;
	unsigned int size = width / 8;
	bool unmap = false;
	u64 dummy;

	rcu_read_lock();
	virt_addr = acpi_map_vaddr_lookup(phys_addr, size);
	if (!virt_addr) {
		rcu_read_unlock();
		virt_addr = acpi_os_ioremap(phys_addr, size);
		if (!virt_addr)
			return AE_BAD_ADDRESS;
		unmap = true;
	}

	if (!value)
		value = &dummy;

	switch (width) {
	case 8:
		*(u8 *) value = readb(virt_addr);
		break;
	case 16:
		*(u16 *) value = readw(virt_addr);
		break;
	case 32:
		*(u32 *) value = readl(virt_addr);
		break;
	case 64:
		*(u64 *) value = read64(virt_addr);
		break;
	default:
		BUG();
	}

	if (unmap)
		iounmap(virt_addr);
	else
		rcu_read_unlock();

	return AE_OK;
}

#ifdef writeq
static inline void write64(u64 val, volatile void __iomem *addr)
{
	writeq(val, addr);
}
#else
static inline void write64(u64 val, volatile void __iomem *addr)
{
	writel(val, addr);
	writel(val>>32, addr+4);
}
#endif

acpi_status
acpi_os_write_memory(acpi_physical_address phys_addr, u64 value, u32 width)
{
	void __iomem *virt_addr;
	unsigned int size = width / 8;
	bool unmap = false;

	rcu_read_lock();
	virt_addr = acpi_map_vaddr_lookup(phys_addr, size);
	if (!virt_addr) {
		rcu_read_unlock();
		virt_addr = acpi_os_ioremap(phys_addr, size);
		if (!virt_addr)
			return AE_BAD_ADDRESS;
		unmap = true;
	}

	switch (width) {
	case 8:
		writeb(value, virt_addr);
		break;
	case 16:
		writew(value, virt_addr);
		break;
	case 32:
		writel(value, virt_addr);
		break;
	case 64:
		write64(value, virt_addr);
		break;
	default:
		BUG();
	}

	if (unmap)
		iounmap(virt_addr);
	else
		rcu_read_unlock();

	return AE_OK;
}

acpi_status
acpi_os_read_pci_configuration(struct acpi_pci_id * pci_id, u32 reg,
			       u64 *value, u32 width)
{
	int result, size;
	u32 value32;

	if (!value)
		return AE_BAD_PARAMETER;

	switch (width) {
	case 8:
		size = 1;
		break;
	case 16:
		size = 2;
		break;
	case 32:
		size = 4;
		break;
	default:
		return AE_ERROR;
	}

	result = raw_pci_read(pci_id->segment, pci_id->bus,
				PCI_DEVFN(pci_id->device, pci_id->function),
				reg, size, &value32);
	*value = value32;

	return (result ? AE_ERROR : AE_OK);
}

acpi_status
acpi_os_write_pci_configuration(struct acpi_pci_id * pci_id, u32 reg,
				u64 value, u32 width)
{
	int result, size;

	switch (width) {
	case 8:
		size = 1;
		break;
	case 16:
		size = 2;
		break;
	case 32:
		size = 4;
		break;
	default:
		return AE_ERROR;
	}

	result = raw_pci_write(pci_id->segment, pci_id->bus,
				PCI_DEVFN(pci_id->device, pci_id->function),
				reg, size, value);

	return (result ? AE_ERROR : AE_OK);
}

static void acpi_os_execute_deferred(struct work_struct *work)
{
	struct acpi_os_dpc *dpc = container_of(work, struct acpi_os_dpc, work);

	if (dpc->wait)
		acpi_os_wait_events_complete(NULL);

	dpc->function(dpc->context);
	kfree(dpc);
}

/*******************************************************************************
 *
 * FUNCTION:    acpi_os_execute
 *
 * PARAMETERS:  Type               - Type of the callback
 *              Function           - Function to be executed
 *              Context            - Function parameters
 *
 * RETURN:      Status
 *
 * DESCRIPTION: Depending on type, either queues function for deferred execution or
 *              immediately executes function on a separate thread.
 *
 ******************************************************************************/

static acpi_status __acpi_os_execute(acpi_execute_type type,
	acpi_osd_exec_callback function, void *context, int hp)
{
	acpi_status status = AE_OK;
	struct acpi_os_dpc *dpc;
	struct workqueue_struct *queue;
	int ret;
	ACPI_DEBUG_PRINT((ACPI_DB_EXEC,
			  "Scheduling function [%p(%p)] for deferred execution.\n",
			  function, context));

	/*
	 * Allocate/initialize DPC structure.  Note that this memory will be
	 * freed by the callee.  The kernel handles the work_struct list  in a
	 * way that allows us to also free its memory inside the callee.
	 * Because we may want to schedule several tasks with different
	 * parameters we can't use the approach some kernel code uses of
	 * having a static work_struct.
	 */

	dpc = kmalloc(sizeof(struct acpi_os_dpc), GFP_ATOMIC);
	if (!dpc)
		return AE_NO_MEMORY;

	dpc->function = function;
	dpc->context = context;

	/*
	 * We can't run hotplug code in keventd_wq/kacpid_wq/kacpid_notify_wq
	 * because the hotplug code may call driver .remove() functions,
	 * which invoke flush_scheduled_work/acpi_os_wait_events_complete
	 * to flush these workqueues.
	 */
	queue = hp ? kacpi_hotplug_wq :
		(type == OSL_NOTIFY_HANDLER ? kacpi_notify_wq : kacpid_wq);
	dpc->wait = hp ? 1 : 0;

	if (queue == kacpi_hotplug_wq)
		INIT_WORK(&dpc->work, acpi_os_execute_deferred);
	else if (queue == kacpi_notify_wq)
		INIT_WORK(&dpc->work, acpi_os_execute_deferred);
	else
		INIT_WORK(&dpc->work, acpi_os_execute_deferred);

	/*
	 * On some machines, a software-initiated SMI causes corruption unless
	 * the SMI runs on CPU 0.  An SMI can be initiated by any AML, but
	 * typically it's done in GPE-related methods that are run via
	 * workqueues, so we can avoid the known corruption cases by always
	 * queueing on CPU 0.
	 */
	ret = queue_work_on(0, queue, &dpc->work);

	if (!ret) {
		printk(KERN_ERR PREFIX
			  "Call to queue_work() failed.\n");
		status = AE_ERROR;
		kfree(dpc);
	}
	return status;
}

acpi_status acpi_os_execute(acpi_execute_type type,
			    acpi_osd_exec_callback function, void *context)
{
	return __acpi_os_execute(type, function, context, 0);
}
EXPORT_SYMBOL(acpi_os_execute);

acpi_status acpi_os_hotplug_execute(acpi_osd_exec_callback function,
	void *context)
{
	return __acpi_os_execute(0, function, context, 1);
}

void acpi_os_wait_events_complete(void *context)
{
	flush_workqueue(kacpid_wq);
	flush_workqueue(kacpi_notify_wq);
}

EXPORT_SYMBOL(acpi_os_wait_events_complete);

acpi_status
acpi_os_create_semaphore(u32 max_units, u32 initial_units, acpi_handle * handle)
{
	struct semaphore *sem = NULL;

	sem = acpi_os_allocate(sizeof(struct semaphore));
	if (!sem)
		return AE_NO_MEMORY;
	memset(sem, 0, sizeof(struct semaphore));

	sema_init(sem, initial_units);

	*handle = (acpi_handle *) sem;

	ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, "Creating semaphore[%p|%d].\n",
			  *handle, initial_units));

	return AE_OK;
}

/*
 * TODO: A better way to delete semaphores?  Linux doesn't have a
 * 'delete_semaphore()' function -- may result in an invalid
 * pointer dereference for non-synchronized consumers.	Should
 * we at least check for blocked threads and signal/cancel them?
 */

acpi_status acpi_os_delete_semaphore(acpi_handle handle)
{
	struct semaphore *sem = (struct semaphore *)handle;

	if (!sem)
		return AE_BAD_PARAMETER;

	ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, "Deleting semaphore[%p].\n", handle));

	BUG_ON(!list_empty(&sem->wait_list));
	kfree(sem);
	sem = NULL;

	return AE_OK;
}

/*
 * TODO: Support for units > 1?
 */
acpi_status acpi_os_wait_semaphore(acpi_handle handle, u32 units, u16 timeout)
{
	acpi_status status = AE_OK;
	struct semaphore *sem = (struct semaphore *)handle;
	long jiffies;
	int ret = 0;

	if (!sem || (units < 1))
		return AE_BAD_PARAMETER;

	if (units > 1)
		return AE_SUPPORT;

	ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, "Waiting for semaphore[%p|%d|%d]\n",
			  handle, units, timeout));

	if (timeout == ACPI_WAIT_FOREVER)
		jiffies = MAX_SCHEDULE_TIMEOUT;
	else
		jiffies = msecs_to_jiffies(timeout);

	ret = down_timeout(sem, jiffies);
	if (ret)
		status = AE_TIME;

	if (ACPI_FAILURE(status)) {
		ACPI_DEBUG_PRINT((ACPI_DB_MUTEX,
				  "Failed to acquire semaphore[%p|%d|%d], %s",
				  handle, units, timeout,
				  acpi_format_exception(status)));
	} else {
		ACPI_DEBUG_PRINT((ACPI_DB_MUTEX,
				  "Acquired semaphore[%p|%d|%d]", handle,
				  units, timeout));
	}

	return status;
}

/*
 * TODO: Support for units > 1?
 */
acpi_status acpi_os_signal_semaphore(acpi_handle handle, u32 units)
{
	struct semaphore *sem = (struct semaphore *)handle;

	if (!sem || (units < 1))
		return AE_BAD_PARAMETER;

	if (units > 1)
		return AE_SUPPORT;

	ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, "Signaling semaphore[%p|%d]\n", handle,
			  units));

	up(sem);

	return AE_OK;
}

#ifdef ACPI_FUTURE_USAGE
u32 acpi_os_get_line(char *buffer)
{

#ifdef ENABLE_DEBUGGER
	if (acpi_in_debugger) {
		u32 chars;

		kdb_read(buffer, sizeof(line_buf));

		/* remove the CR kdb includes */
		chars = strlen(buffer) - 1;
		buffer[chars] = '\0';
	}
#endif

	return 0;
}
#endif				/*  ACPI_FUTURE_USAGE  */

acpi_status acpi_os_signal(u32 function, void *info)
{
	switch (function) {
	case ACPI_SIGNAL_FATAL:
		printk(KERN_ERR PREFIX "Fatal opcode executed\n");
		break;
	case ACPI_SIGNAL_BREAKPOINT:
		/*
		 * AML Breakpoint
		 * ACPI spec. says to treat it as a NOP unless
		 * you are debugging.  So if/when we integrate
		 * AML debugger into the kernel debugger its
		 * hook will go here.  But until then it is
		 * not useful to print anything on breakpoints.
		 */
		break;
	default:
		break;
	}

	return AE_OK;
}

static int __init acpi_os_name_setup(char *str)
{
	char *p = acpi_os_name;
	int count = ACPI_MAX_OVERRIDE_LEN - 1;

	if (!str || !*str)
		return 0;

	for (; count-- && str && *str; str++) {
		if (isalnum(*str) || *str == ' ' || *str == ':')
			*p++ = *str;
		else if (*str == '\'' || *str == '"')
			continue;
		else
			break;
	}
	*p = 0;

	return 1;

}

__setup("acpi_os_name=", acpi_os_name_setup);

#define	OSI_STRING_LENGTH_MAX 64	/* arbitrary */
#define	OSI_STRING_ENTRIES_MAX 16	/* arbitrary */

struct osi_setup_entry {
	char string[OSI_STRING_LENGTH_MAX];
	bool enable;
};

static struct osi_setup_entry __initdata
		osi_setup_entries[OSI_STRING_ENTRIES_MAX] = {
	{"Module Device", true},
	{"Processor Device", true},
	{"3.0 _SCP Extensions", true},
	{"Processor Aggregator Device", true},
};

void __init acpi_osi_setup(char *str)
{
	struct osi_setup_entry *osi;
	bool enable = true;
	int i;

	if (!acpi_gbl_create_osi_method)
		return;

	if (str == NULL || *str == '\0') {
		printk(KERN_INFO PREFIX "_OSI method disabled\n");
		acpi_gbl_create_osi_method = FALSE;
		return;
	}

	if (*str == '!') {
		str++;
		enable = false;
	}

	for (i = 0; i < OSI_STRING_ENTRIES_MAX; i++) {
		osi = &osi_setup_entries[i];
		if (!strcmp(osi->string, str)) {
			osi->enable = enable;
			break;
		} else if (osi->string[0] == '\0') {
			osi->enable = enable;
			strncpy(osi->string, str, OSI_STRING_LENGTH_MAX);
			break;
		}
	}
}

static void __init set_osi_linux(unsigned int enable)
{
	if (osi_linux.enable != enable)
		osi_linux.enable = enable;

	if (osi_linux.enable)
		acpi_osi_setup("Linux");
	else
		acpi_osi_setup("!Linux");

	return;
}

static void __init acpi_cmdline_osi_linux(unsigned int enable)
{
	osi_linux.cmdline = 1;	/* cmdline set the default and override DMI */
	osi_linux.dmi = 0;
	set_osi_linux(enable);

	return;
}

void __init acpi_dmi_osi_linux(int enable, const struct dmi_system_id *d)
{
	printk(KERN_NOTICE PREFIX "DMI detected: %s\n", d->ident);

	if (enable == -1)
		return;

	osi_linux.dmi = 1;	/* DMI knows that this box asks OSI(Linux) */
	set_osi_linux(enable);

	return;
}

/*
 * Modify the list of "OS Interfaces" reported to BIOS via _OSI
 *
 * empty string disables _OSI
 * string starting with '!' disables that string
 * otherwise string is added to list, augmenting built-in strings
 */
static void __init acpi_osi_setup_late(void)
{
	struct osi_setup_entry *osi;
	char *str;
	int i;
	acpi_status status;

	for (i = 0; i < OSI_STRING_ENTRIES_MAX; i++) {
		osi = &osi_setup_entries[i];
		str = osi->string;

		if (*str == '\0')
			break;
		if (osi->enable) {
			status = acpi_install_interface(str);

			if (ACPI_SUCCESS(status))
				printk(KERN_INFO PREFIX "Added _OSI(%s)\n", str);
		} else {
			status = acpi_remove_interface(str);

			if (ACPI_SUCCESS(status))
				printk(KERN_INFO PREFIX "Deleted _OSI(%s)\n", str);
		}
	}
}

static int __init osi_setup(char *str)
{
	if (str && !strcmp("Linux", str))
		acpi_cmdline_osi_linux(1);
	else if (str && !strcmp("!Linux", str))
		acpi_cmdline_osi_linux(0);
	else
		acpi_osi_setup(str);

	return 1;
}

__setup("acpi_osi=", osi_setup);

/* enable serialization to combat AE_ALREADY_EXISTS errors */
static int __init acpi_serialize_setup(char *str)
{
	printk(KERN_INFO PREFIX "serialize enabled\n");

	acpi_gbl_all_methods_serialized = TRUE;

	return 1;
}

__setup("acpi_serialize", acpi_serialize_setup);

/* Check of resource interference between native drivers and ACPI
 * OperationRegions (SystemIO and System Memory only).
 * IO ports and memory declared in ACPI might be used by the ACPI subsystem
 * in arbitrary AML code and can interfere with legacy drivers.
 * acpi_enforce_resources= can be set to:
 *
 *   - strict (default) (2)
 *     -> further driver trying to access the resources will not load
 *   - lax              (1)
 *     -> further driver trying to access the resources will load, but you
 *     get a system message that something might go wrong...
 *
 *   - no               (0)
 *     -> ACPI Operation Region resources will not be registered
 *
 */
#define ENFORCE_RESOURCES_STRICT 2
#define ENFORCE_RESOURCES_LAX    1
#define ENFORCE_RESOURCES_NO     0

static unsigned int acpi_enforce_resources = ENFORCE_RESOURCES_STRICT;

static int __init acpi_enforce_resources_setup(char *str)
{
	if (str == NULL || *str == '\0')
		return 0;

	if (!strcmp("strict", str))
		acpi_enforce_resources = ENFORCE_RESOURCES_STRICT;
	else if (!strcmp("lax", str))
		acpi_enforce_resources = ENFORCE_RESOURCES_LAX;
	else if (!strcmp("no", str))
		acpi_enforce_resources = ENFORCE_RESOURCES_NO;

	return 1;
}

__setup("acpi_enforce_resources=", acpi_enforce_resources_setup);

/* Check for resource conflicts between ACPI OperationRegions and native
 * drivers */
int acpi_check_resource_conflict(const struct resource *res)
{
	acpi_adr_space_type space_id;
	acpi_size length;
	u8 warn = 0;
	int clash = 0;

	if (acpi_enforce_resources == ENFORCE_RESOURCES_NO)
		return 0;
	if (!(res->flags & IORESOURCE_IO) && !(res->flags & IORESOURCE_MEM))
		return 0;

	if (res->flags & IORESOURCE_IO)
		space_id = ACPI_ADR_SPACE_SYSTEM_IO;
	else
		space_id = ACPI_ADR_SPACE_SYSTEM_MEMORY;

	length = res->end - res->start + 1;
	if (acpi_enforce_resources != ENFORCE_RESOURCES_NO)
		warn = 1;
	clash = acpi_check_address_range(space_id, res->start, length, warn);

	if (clash) {
		if (acpi_enforce_resources != ENFORCE_RESOURCES_NO) {
			if (acpi_enforce_resources == ENFORCE_RESOURCES_LAX)
				printk(KERN_NOTICE "ACPI: This conflict may"
				       " cause random problems and system"
				       " instability\n");
			printk(KERN_INFO "ACPI: If an ACPI driver is available"
			       " for this device, you should use it instead of"
			       " the native driver\n");
		}
		if (acpi_enforce_resources == ENFORCE_RESOURCES_STRICT)
			return -EBUSY;
	}
	return 0;
}
EXPORT_SYMBOL(acpi_check_resource_conflict);

int acpi_check_region(resource_size_t start, resource_size_t n,
		      const char *name)
{
	struct resource res = {
		.start = start,
		.end   = start + n - 1,
		.name  = name,
		.flags = IORESOURCE_IO,
	};

	return acpi_check_resource_conflict(&res);
}
EXPORT_SYMBOL(acpi_check_region);

/*
 * Let drivers know whether the resource checks are effective
 */
int acpi_resources_are_enforced(void)
{
	return acpi_enforce_resources == ENFORCE_RESOURCES_STRICT;
}
EXPORT_SYMBOL(acpi_resources_are_enforced);

/*
 * Deallocate the memory for a spinlock.
 */
void acpi_os_delete_lock(acpi_spinlock handle)
{
	ACPI_FREE(handle);
}

/*
 * Acquire a spinlock.
 *
 * handle is a pointer to the spinlock_t.
 */

acpi_cpu_flags acpi_os_acquire_lock(acpi_spinlock lockp)
{
	acpi_cpu_flags flags;
	spin_lock_irqsave(lockp, flags);
	return flags;
}

/*
 * Release a spinlock. See above.
 */

void acpi_os_release_lock(acpi_spinlock lockp, acpi_cpu_flags flags)
{
	spin_unlock_irqrestore(lockp, flags);
}

#ifndef ACPI_USE_LOCAL_CACHE

/*******************************************************************************
 *
 * FUNCTION:    acpi_os_create_cache
 *
 * PARAMETERS:  name      - Ascii name for the cache
 *              size      - Size of each cached object
 *              depth     - Maximum depth of the cache (in objects) <ignored>
 *              cache     - Where the new cache object is returned
 *
 * RETURN:      status
 *
 * DESCRIPTION: Create a cache object
 *
 ******************************************************************************/

acpi_status
acpi_os_create_cache(char *name, u16 size, u16 depth, acpi_cache_t ** cache)
{
	*cache = kmem_cache_create(name, size, 0, 0, NULL);
	if (*cache == NULL)
		return AE_ERROR;
	else
		return AE_OK;
}

/*******************************************************************************
 *
 * FUNCTION:    acpi_os_purge_cache
 *
 * PARAMETERS:  Cache           - Handle to cache object
 *
 * RETURN:      Status
 *
 * DESCRIPTION: Free all objects within the requested cache.
 *
 ******************************************************************************/

acpi_status acpi_os_purge_cache(acpi_cache_t * cache)
{
	kmem_cache_shrink(cache);
	return (AE_OK);
}

/*******************************************************************************
 *
 * FUNCTION:    acpi_os_delete_cache
 *
 * PARAMETERS:  Cache           - Handle to cache object
 *
 * RETURN:      Status
 *
 * DESCRIPTION: Free all objects within the requested cache and delete the
 *              cache object.
 *
 ******************************************************************************/

acpi_status acpi_os_delete_cache(acpi_cache_t * cache)
{
	kmem_cache_destroy(cache);
	return (AE_OK);
}

/*******************************************************************************
 *
 * FUNCTION:    acpi_os_release_object
 *
 * PARAMETERS:  Cache       - Handle to cache object
 *              Object      - The object to be released
 *
 * RETURN:      None
 *
 * DESCRIPTION: Release an object to the specified cache.  If cache is full,
 *              the object is deleted.
 *
 ******************************************************************************/

acpi_status acpi_os_release_object(acpi_cache_t * cache, void *object)
{
	kmem_cache_free(cache, object);
	return (AE_OK);
}
#endif

acpi_status __init acpi_os_initialize(void)
{
	acpi_os_map_generic_address(&acpi_gbl_FADT.xpm1a_event_block);
	acpi_os_map_generic_address(&acpi_gbl_FADT.xpm1b_event_block);
	acpi_os_map_generic_address(&acpi_gbl_FADT.xgpe0_block);
	acpi_os_map_generic_address(&acpi_gbl_FADT.xgpe1_block);

	return AE_OK;
}

acpi_status __init acpi_os_initialize1(void)
{
	kacpid_wq = alloc_workqueue("kacpid", 0, 1);
	kacpi_notify_wq = alloc_workqueue("kacpi_notify", 0, 1);
	kacpi_hotplug_wq = alloc_workqueue("kacpi_hotplug", 0, 1);
	BUG_ON(!kacpid_wq);
	BUG_ON(!kacpi_notify_wq);
	BUG_ON(!kacpi_hotplug_wq);
	acpi_install_interface_handler(acpi_osi_handler);
	acpi_osi_setup_late();
	return AE_OK;
}

acpi_status acpi_os_terminate(void)
{
	if (acpi_irq_handler) {
		acpi_os_remove_interrupt_handler(acpi_gbl_FADT.sci_interrupt,
						 acpi_irq_handler);
	}

	acpi_os_unmap_generic_address(&acpi_gbl_FADT.xgpe1_block);
	acpi_os_unmap_generic_address(&acpi_gbl_FADT.xgpe0_block);
	acpi_os_unmap_generic_address(&acpi_gbl_FADT.xpm1b_event_block);
	acpi_os_unmap_generic_address(&acpi_gbl_FADT.xpm1a_event_block);

	destroy_workqueue(kacpid_wq);
	destroy_workqueue(kacpi_notify_wq);
	destroy_workqueue(kacpi_hotplug_wq);

	return AE_OK;
}

acpi_status acpi_os_prepare_sleep(u8 sleep_state, u32 pm1a_control,
				  u32 pm1b_control)
{
	int rc = 0;
	if (__acpi_os_prepare_sleep)
		rc = __acpi_os_prepare_sleep(sleep_state,
					     pm1a_control, pm1b_control);
	if (rc < 0)
		return AE_ERROR;
	else if (rc > 0)
		return AE_CTRL_SKIP;

	return AE_OK;
}

void acpi_os_set_prepare_sleep(int (*func)(u8 sleep_state,
			       u32 pm1a_ctrl, u32 pm1b_ctrl))
{
	__acpi_os_prepare_sleep = func;
}

redpajama_set_name: RedPajamaGithub


19th century … could be earlier!
Age 19th century … could be earlier!
We have been instructed in the sale of an extensive and choice single owner Oriental collection amassed over many decades and amounting to over 1,000 items spanning the Dynasties with many rare, unusual and interesting pieces. The collection is to be offered without reserve. On offer is this superb antique Chinese hand carved giltwood figural red lacquered panel dating from the 19th century and depicting an Imperial court scene. This exceptionally fine panel is carved in deep relief and portrays a court scene with gifts being offered to a figure which we assume to be the emperor. The scene, almost biblical in style, is extremely well carved and well detailed and finished in rich gilding over a red lacquer base. The carving which is of rectangular shape is mounted in a black rimmed frame and is typically not marked. A top quality, rare and stunning example!


text:
Libya: Shooting In Gaddafi's House Stops Interview; Sons Captured; 1,300 Killed
August 22, 2011 August 21, 2017 RT 1 Comment
By RT
Rebels say all of Tripoli is under their control, except for Gaddafi's Bab al-Aziziyah compound. They also claim to have taken control of the state TV building.
Eyewitnesses are tweeting that an "Independence" flag has been raised on Abdel Ghani mosque.
Some estimates put the death toll from this weekend alone at more than 1,300 people, with around 5,000 injured.
Three of Gaddafi's sons have reportedly been captured by the rebels. According to the Libyan leader's spokesman, Gaddafi is prepared to negotiate directly with the head of the rebel transitional council, but says the rebels are not ready to listen.
Earlier on Sunday Saif al-Islam Gaddafi, the Libyan leader's son and a well-known face in the West, has been captured, the head of Libyan rebel national transitional council told the Al Jazeera television network.
Afterward came reports of Saadi Gaddafi being captured in Tripoli and Mohammed Gaddafi surrendering to the rebels
Gaddafi calls on Libyans to fight "traitors"
According to recent reports, rebel forces entered the city center and claimed that Gaddafi's presidential guard had surrendered.
A pitched battle is raging in Libya, with multiple reports of fierce clashes around and inside Tripoli and Colonel Muammar Gaddafi asking Libyans to take up arms against the rebels. He reportedly called on Libya's tribes to come to the defense of Tripoli and "cleanse" the capital of rebel forces.
Earlier, Gaddafi said he will stay in Tripoli "until the end" and called on his supporters around the country to help liberate the capital from a rebel offensive, Reuters quoted the Libya strongman as saying, citing state television.
In a broadcasted audio message, Gaddafi said he was "afraid that Tripoli will burn" and that he would provide weapons to supporters to fight off the rebels.
The country's major military base is now thought to be in rebel hands, strengthening their chances of outright victory. It is also believed that after major clashes the rebels captured Tripoli's Mitiga airbase.
Opposition forces also claim to have freed prisoners locked up during the uprising against Gaddafi's regime.
"They have no respect for the international press"
Political analyst Mahdi Nazemroaya, speaking from Tripoli, told RT that children are defending Gaddafi against NATO's onslaught.
"This war is not about Colonel Gaddafi, Colonel Gaddafi is just a pretext for this war," he claimed. "This war has [everything] to do with stealing money from the Libyan people. There is shock, there is fear, there is denial, and then there is resistance. And many of [the defenders of Tripoli] are children. It hurts me to say this, but I've seen young men picking up guns to defend this country."
According to Nazemroaya, international journalists are being targeted by the rebels and the NATO forces that support them.
"They are specifically targeting the areas where international journalists are, to sow panic here," he argued. "NATO has done all the heavy work. This is a NATO war. They heavily bombed cities west of [Tripoli], they've bombed all night, without even 10 seconds of stopping. They have bombed this entire city and NATO landed the insurgents on the coast of Tripoli."
"They have no respect for the international press," Nazemroaya declared. "I was putting up a sign on top of the hotel – I took the initiative to do that and write "Press" [on the sign] – and a sniper shot at me."
Nazemroaya also says that an unconfirmed source told him that people are gathering on Green Square in the centre of the capital and are ready to defend their city.
"They've got arms and they are ready to fight," he said.
Independent journalist Lizzie Phelan, speaking from Tripoli, described the situation in the Libyan capital as "grave and crucial."
"Here in Tripoli, NATO bombs, as [Gaddafi's regime spokesman] Ibrahim Moussa has said, 'anything that moves,'" Phelan told RT. "The time is well overdue for a cease-fire and negotiations."
US declares Gaddafi's rule is coming to an end
NATO Secretary General Anders Fogh Rasmussen has released a statement on the situation in Tripoli – saying the Libyan people should be spared further bloodshed.
A key player in the military campaign against the Libyan regime, Washington, claimed the rule of Muammar Gaddafi is coming to an end. The US is reported to be in close contact with rebel leaders and is monitoring the situation on the ground.
"If Gaddafi cared about the welfare of the Libyan people, he would step down now," the US State Department declared on Sunday night.
The State Department encouraged the National Transitional Council, the rebels' provisional body, to start planning for a "post-Gaddafi Libya."
Meanwhile, President Nicolas Sarkozy expressed his full support for the rebels battling Muammar Gaddafi's troops in and around the Libyan capital.
"At the moment when decisive events are taking place in the Tripoli region, in Tripoli itself, and elsewhere in Libya, the president salutes the courage of the rebel fighters and of the Libyan people who are rising up," Sarkozy's office stated on Sunday night, as quoted by the Reuters news agency.
Sarkozy reiterated that France is backing the National Transitional Council, the "legitimate Libyan authorities." He also called on Gaddafi to immediately give up power and order his forces to cease fire.
"We are in danger"
Journalist Mahdi Nazemroaya is in the central Tripoli hotel where much of the international press has been housed. He told RT the situation on the ground is very dangerous, and that the hotel is surrounded by rebel gunmen.
Home » Libya: Shooting In Gaddafi's House Stops Interview; Sons Captured; 1,300 Killed
← Organization Of Islamic Cooperation: Call To Act Swiftly To Rein In Syria
Gaddafi's Son Arrested; To Be Handed Over To The Hague – Prosecutor →
RT, previously known as Russia Today, is a global multilingual television news network based in Russia. RT was the first all-digital Russian TV network.
One thought on "Libya: Shooting In Gaddafi's House Stops Interview; Sons Captured; 1,300 Killed"
SUNDAY KOTUR
gaddafi should be severely dealt with. He should be made bro suffer seriously for the blood shed in Libya. Kudus to the Rebels


The procedure example16.p installs an error handler to detect a JMS server communication loss.
DEFINE VARIABLE errorConsumer AS HANDLE NO-UNDO.
DEFINE VARIABLE jmsIsOk AS LOGICAL NO-UNDO INITIAL TRUE.
RUN setErrorHandler IN hPubSubSession (errorConsumer).
MESSAGE "Disocnnectiong from JMS Server... "VIEW-AS ALERT-BOX.
DEFINE VARIABLE errorCode AS CHARACTER NO-UNDO.
DEFINE VARIABLE errorText AS CHARACTER NO-UNDO.
errorText = DYNAMIC-FUNCTION('getText':U IN hMessage).
MESSAGE errorText errorCode VIEW-AS ALERT-BOX.
2. Shut down the SonicMQ Broker to simulate the communication loss.


text:
Why Did Ecuador Suddenly Turn on Assange?
All about the national interest
by Doomberg April 12, 2019, 1:00 PM 3.7k Views 0 Votes 16 Comments
On Thursday, Ecuador suddenly cut Wikileaks founder Julian Assange loose, surprising many people. To understand why Ecuador's president Lenin Moreno suddenly revoked asylum, it's necessary to go back to the presidency of Rafael Correa, who originally granted Assange asylum in 2012.
Correa was originally the Minister of Finance in Ecuador, where he established relationships with many of the rising leftist leaders at the time, including Argentina's Nestor Kirchner, Brazil's Luiz Inacio Lula da Silva, and most importantly Venezeula's Hugo Chavez. He also frequently blasted and bashed the United States in public. He was a committed socialist ideologue, and frequently attacked international institutions led by the Western powers, including the World Bank and the IMF.
After a major political crisis in Ecuador, Correa ran for president in 2006 with his party, the Alianza PAIS, on a message of change and reform. After being elected, Correa promptly defaulted on Ecuador's considerable foreign debt and instituted left wing policies, using government money to buy the loyalty of the citizens in a way similar to Hugo Chavez, through various poverty assistance programs.
He also launched a harsh crackdown on the Ecuadorian press, and created a regime of censorship, even jailing some reporters. It's important to understand that Correa was not some brave defender of the free press when trying to explain his decision to give shelter to Julian Assange.
As I noted above, Correa hated the United States. He routinely made incendiary comments about the United States and then-president George W. Bush in speeches. This comment from 2006 was typical of the socialist loudmouth:
"Calling Bush the devil is offending the devil," said Correa, a U.S.-trained economist who leads 12 other candidates in polls ahead of the Oct. 15 election. He said "the devil is evil, but intelligent."
"I believe Bush is a tremendously dimwitted president who has done great damage to his country and to the world," Correa said.
Correa, who has been highly critical of free market policies advocated by Washington, said he merely expressed "personal opinions" and promised that if elected, "between states and at the level of leaders, the most absolute respect would be shown."
Given how much he hated the United States, it stands to reason that Correa would happily grant asylum to Julian Assange. The Americans wanted to punish Assange for embarrassing them by leaking classified documents related to the Iraq War, and the left rose in his defense almost by reflex. Granting Assange asylum was an excellent opportunity for Correa to improve his standing on the far left and embarrass the Americans.
As with most socialist economies, eventually the "good times" brought on by high levels of spending came to an end. Ecuador's economy was heavily dependent on revenues from the state oil company, Petroecuador. The oil price shock of 2014, where prices dramatically crashed in the second half of the year, forced Correa to rein in his spending and start going hat in hand to foreign investors for assistance. Correa had not saved any money for a "rainy day."
In 2017, Correa decided to step aside and allow Lenin Moreno, his then vice-president, to run for president in his place. At the time, political analysts thought this was a move similar to what Vladimir Putin had done in Russia with Dmitry Medvedev. The plan seemed to be to let Moreno to act as a puppet for Correa and guide the country through the economic crisis so Correa could avoid the blame for it, with Correa easily sweeping back into power after the crisis was over.
The problem with this brilliant plan was that Moreno turned out to to not be a committed socialist. He also wanted to rule in his own right:
Instead, Moreno departed from the script. A quieter, more conciliatory figure than Correa—Moreno is the world's only head of state in a wheelchair, having been paralyzed in a 1998 robbery attempt—his political maneuvering has been swift and decisive. He quickly turned on Correa, seeking to distance himself from perceived rampant corruption and an economic crisis. With a gentle tone, he has built new bridges with the opposition, the private sector and the press—all without alienating his base of working-class voters who benefited from Correa's self-proclaimed "Citizens' Revolution." And with a high stakes referendum over term limits set for Feb. 4, Moreno has boldly moved to consolidate his gains and lock Correa out of office forever.
The first move on Moreno's chessboard came barely two months after taking office. Last August, he stripped the vice president, Jorge Glas, who had been in the position since 2013 and is a close ally of Correa, of all responsibilities, stopping just short of firing him. Glas was accused of taking $13.5 million dollars in bribes from the Brazilian construction giant Odebrecht as part of the sprawling scandal involving kickbacks across Latin America. He has since been convicted, sentenced to six years in prison and removed from office.
It took Moreno some time to consolidate power, though Glas' downfall and arrest was a major step on the road to it. In early 2018, Moreno successfully held a referendum in February in which citizens voted to ban Correa from seeking office again in Ecuador.
Once he had finally obtained full control over the levers of power, however, Moreno was faced with the same problems that had plagued Correa at the end of his presidency. The economy was still on the rocks due to low oil prices and years of overspending, huge levels of indebtedness to China, and low levels of foreign investment. He also had to deal with the fallout from the large earthquake in 2016 as well.
Moreno's main strategy has been to try to reverse and cool down Correa's socialist policies, attract foreign investment into the country, and get rescue financing from multilateral lending institutions. In order to achieve these goals, he has to re-establish good relations with the United States and his centrist or center-right neighbors in Latin America, such as Colombia and Peru.
In July last year, I wrote about a meeting between Mike Pence and Lenin Moreno, which seems to have led to Moreno's decision to dump Correa's old alliance with Venezuela. While it enraged the left, it was undoubtedly the right decision, because the alliance with Venezuela held no benefit for Ecuador, because Maduro had been attacking Moreno in public for "betraying" socialism, and because the Venezuelan refugee crisis was creating serious problems for Ecuador.
More recently, Moreno scored a major win in February, securing more than $10 billion in a multilateral aid package for Ecuador from multiple international lending institutions, including the IMF and the World Bank:
Ecuador has reached a $4.2 billion staff-level financing deal with the International Monetary Fund (IMF), President Lenin Moreno said on Wednesday, as the Andean country grapples with a large fiscal deficit and heavy external debt.
The country will also receive $6 billion in loans from multilateral institutions including the World Bank, the Inter-American Development Bank, and the CAF Andean development bank, Moreno said in a message broadcast on national television and radio.
Ecuador's sovereign bonds surged last week after the IMF confirmed it was engaged in formal talks with Moreno over a possible financial arrangement. Staff-level agreements between the IMF and member countries are subject to approval by the Washington-based lender's executive board.
The OPEC nation's debt grew under former leftist President Rafael Correa. Moreno earned Correa's support during the 2017 election campaign, but has implemented more market-friendly economic policies since taking office.
I think it is very possible that in exchange for this lending package, Washington demanded Moreno turn over Assange. If it wasn't for this aid package, then it is likely Assange was the price for additional aid packages and investments further down the road.
In breaking with Correa and ruling in his own right, Moreno has lost the support of the far left, so he must seek more traditional means of economic growth and foreign support. If he wants to maintain power and repair the damage the Correa administration did to Ecuador, he is going to have to play ball with the United States.
When seen in this context, it becomes easy to understand why Moreno did what he did. I am not happy about what's happened to Assange, but I don't think it's fair to blame Moreno. We should instead blame the far left, which is obsessed with hunting down and punishing its critics and dissenters such as Assange, and forced Ecuador to give him up.
EcuadorJulian AssangeWikileaks
Previous article President Trump To Target Remittances To Mexico
Next article PANIC Over Clown World Meme!
More From: Opinion
Damn, son…
by kingsjester
Womp womp…
Corrupt Puerto Rico Governor Faces Demands to Resign
Trump Tells Off "Four Horsewomen of the Apocalypse" on Twitter, They Accuse Him of Racism
Leftists Honor Tacoma ICE Bomber Under #WillemVanSpronsen
When will the Left own its hate?
Illegal Immigration and the ICE Raids: What IS Our Duty as Christian Americans?
Former ICE Director Tom Homan Lays A Verbal Smackdown on House Dems
Feeling Fear in Trump's Red America
Blue City, Blue State
by Bruno Strozek
President Trump To Target Remittances To Mexico
PANIC Over Clown World Meme!


text:
Archive for the 'Wire' Category
The Tubes Newcastle City Hall 6th November 1977
Posted by vintagerock in Tubes, Wire.	Tagged: classic rock, concert, concerts, gig, gigs, music, new wave, punk, rock, rock n roll.	9 comments
This was a gig like no other. The Tubes were virtually unknown in the UK, but stories of their crazy OTT stage show were gradually creeping over from the USA. This was the band to out-shock, out-punk, and out-do everyone else, and outrage the general population at the same time. So when "The Toobs" came over for a tour of UK theatres and concert halls we just had to see them. We had tickets for Yes, with Donovan support, at Glasgow Apollo on the same night, but we sold them to friends, as we couldn't pass on the chance to see this.
Video screens all over the place, dancers, 50ft stacks, lots of props and each song a new concept and the chance for the band to play new roles. So many highlights. You couldn't take it all in. And just when you thought the Tubes had been as outrageous as they could possibly be, the next song is even crazier, wilder, and more obnoxious.
Alpha male Fee Waybill and the gorgeous Re Styles dueted on'Don't Touch Me There' from a motorbike. Fee Way strapped Styles between two video monitors to perform some 'MondoBondage'. The band become the punk parody "Johnny Bugger and the Dirtboxes". Waybill threatens us all with a chain saw while singing "I Saw Her Standing There". For the end of the show Waybill became Quay Lewd, the ultimate glam rock star complete with three feet high platform shoes, and led us all through a crazy rendition of "White Punks on Dope".
Totally amazing. We were all blown away. 🙂 🙂
Support came from Wire (Dot Dash 🙂 )
Reviews of the time were ecstatic. "The Tubes are a spectacle unlike any other. They present a relentless onslaught of humour, outrage, parody, idiocy, music and costume – a feast for the senses." (Paul Rambali, NME)
"It's nothing short of magnificent. The only words you can use are ones like sensory overkill. The act doesn't leave you alone. One moment it's the band in white intern coats playing straight techno-rock. Then it's a dance troupe on the lam from Star Wars, and then there's the punk pastiche. Except, pastiche or not, The Tubes can cut harder and deeper than 90%s of the new wave." (Mick Farren, NME).
Set list (based on the live lp recorded during the 1977 London concert run at Hammersmith): Overture; Got Yourself a Deal; Show Me a Reason; What Do You Want from Life; God-Bird-Change; Special Ballet; Don't Touch Me There; Mondo Bondage; Smoke (La vie en Fumér); Crime Medley (starting with a siren and including themes from Dragnet, Peter Gunn, Perry Mason & Untouchables); I Was a Punk Before You Were a Punk; I Saw Her Standing There; Boy Crazy; You're No Fun; Stand Up and Shout; White Punks on Dope.
The Tubes were Fee Waybill (front man extraordinaire, crazy guy & vocals), Bill Spooner (guitar), Michael Cotten (synth), Mingo Lewis (percussion), Prairie Prince (massive drum riser and kit), Roger Steen (guitar), Vince Welnick (keyboards), Rick Anderson (bass) and Re Styles (vocals, dance and many unspeakable things with Fee).
I saw the Tubes again in 1978, at the Knebworth Festival sharing a bill with Frank Zappa and Peter Gabriel. I'll save that one for when I come to write about Zappa. The Tubes were back at the City Hall again in 1979 for the 'Remote Control' tour, with support from Squeeze. I'll write about that gig tomorrow.


text:
Covid vaccine booster rollout at a standstill despite No 10 pledge to put it 'on steroids'
Fears of further curbs at Christmas after fewer jabs given over weekend than before ministers promised to accelerate the programme
By Laura Donnelly, Health Editor and Harry Yorke, Whitehall Editor 7 December 2021 • 4:51am
Sajid Javid, the Health Secretary, said that the Government was 'leaving nothing to chance' in the fight to contain the omicron variant Credit: House of Commons/PA Wire
Coronavirus Article Bar with counter
The booster rollout vaccinated fewer people over the weekend than it did before ministers promised to put it "on steroids", figures showed on Monday.
The number of third jabs administered in England was lower last weekend than it was the previous one, when the Prime Minister called for the programme to be accelerated, in order to build defences against the omicron variant.
On Monday night, there were accusations that the programme was "stuck in first gear" and fears that further restrictions could be introduced over Christmas unless the programme is accelerated.
A blame game began in Whitehall over the speed of the rollout, with sources pointing the finger at the UK Health Security Agency (UKHSA), run by Dr Jenny Harries, saying it was responsible for delays.
It came as Sajid Javid said it was "highly likely that there is now community transmission across multiple regions of England," with 336 cases confirmed across the UK.
The Health Secretary also raised fears that the new variant may spread more quickly than its predecessors, saying it could "knock us off our road to recovery".
The slow booster rollout, combined with Mr Javid's warnings, has led to concerns that the current restrictions, which saw face masks and travel curbs reintroduced last month, are increasingly unlikely to be eased when reviewed by the Government next week.
On Monday, Boris Johnson refused to rule out further restrictions, saying: "We're still waiting to see exactly how dangerous it is, what sort of effect it has in terms of deaths and hospitalisations."
On Monday night, government scientific advisers said they believe Omicron infections in Britain are doubling every three days.
Prof Neil Ferguson of Imperial College London said data "suggests a doubling time of three days or less", The Times reported.
Boris Johnson refused to rule out introducing further restrictions to prevent the spread of the omicron variant Credit: Christopher Furlong/Getty Images
In a Commons address on Monday, Mr Javid promised that the Government was "leaving nothing to chance" in a strategy to "buy ourselves time and strengthen our defences", and highlighted the role of the booster rollout.
However, latest NHS statistics showed just 221,674 boosters were given on Sunday, down from 223,189 the week before. The figure of 412,755 given on Saturday compared with 419,657 on the same day the previous week.
While the weekly figure for England has risen slightly, from 2.16 million to 2.24 million, and the UK figure from 2.56 million to 2.64 million, they are some way off the government target, which pledged to deliver 3.5 million jabs a week.
Just 10 days ago, the Prime Minister asked scientific advisers if they would back an expansion in the rollout of jabs to all adults, shortening the gap between doses, to speed up the rollout.
While such advice emerged more than a week ago, recommending that all over-18s should be offered a booster, as little as three months after their second jab, the programme has yet to be altered.
On Monday night, a blame game emerged in Whitehall. NHS chiefs only issued guidance to the health service last Friday night, after days of wrangling with doctors' unions about which services GPs would stop providing to take part in the rollout. This said the accelerated rollout, starting with the over-40s, may not begin until December 13.
Health sources said that the NHS delayed opening up its booking systems because it was waiting for legal instructions to be provided by the UKHSA.
However, others said that such paperwork should not cause delays, pointing out that the updates in protocols apply only to non-medical professionals, with doctors, nurses and pharmacists already allowed to follow the new guidance.
Concern over domestic spread of omicron
The Health Secretary said that 336 cases of the omicron variant had now been confirmed in the UK: 261 in England, 71 in Scotland and four in Wales.
Mr Javid said that some of the cases were not linked to international travel, meaning that people were likely to have caught the omicron variant while in the UK.
"It is highly likely that there is now community transmission across multiple regions of England," he told the Commons.
The Health Secretary said that the Government was "leaving nothing to chance" in its efforts to build defences against the new threat, saying there was some evidence it may spread more quickly than other variants.
He told the Commons: "We are learning more about this new variant all the time. Recent analysis from the UK Health Security Agency suggests that the window between infection and infectiousness may be shorter for the omicron variant than for the delta variant. But we don't yet have a complete picture of whether omicron causes more severe disease or, indeed, how it interacts with the vaccines.
"We can't say for certain at this point whether omicron has the potential to knock us off our road to recovery."
He added: "We are leaving nothing to chance. Our strategy is to buy ourselves time and to strengthen our defences while our world-leading scientists assess this new variant and what it means for our fight against Covid-19."
The Government said, as of 9am on Monday, there had been a further 51,459 lab-confirmed Covid-19 cases in the UK.
Mr Javid said that as far as he was aware none of the 336 people with a confirmed case of omicron in the UK had been admitted to hospital.
On Monday night, Wes Streeting, the shadow health secretary, said: "We want the Government to succeed, but the truth is they've been stuck in first gear on the booster rollout."
He called on the Health Secretary to "provide an update on when he expects to hit that target of half a million booster jabs a day".
Mr Javid insisted that the booster programme was "steaming ahead at a blistering pace", restating government commitments to offer boosters to all eligible over-18s by the end of January.
Is the UK on track to hit vaccination targets?
David Davis, a former Cabinet minister, said: "It's clearly necessary that the Government doesn't just talk a big story, but also delivers a big story. That clearly isn't happening at the moment. I would hope that Sajid has got the relevant people in front of him in his office demanding, one, why it has not happened and, two, that they put it right straightaway."
Next week, the Government will review whether new Covid restrictions such as face mask mandates on public transport and self-isolation for new arrivals should continue.
Mr Javid said: "I can assure the House [of Commons] that we won't keep these measures in place for a day longer than we have to."
However, the lack of acceleration of the booster rollout has raised concerns that the restrictions are likely to remain in place.
One former minister said: "It is disappointing that despite the Government pulling out all the stops, we are not seeing that in the numbers this weekend."
Despite the Government's determination to push the booster out to everyone, including with advertising campaigns such as this, the rollout in some areas has been sluggish Credit: Andy Rain/EPA-EFE/Shutterstock
The rollout has been plagued in some areas by a lack of vaccinators and volunteer marshals ready to help administer jabs. In Peterborough, 1,000 people were turned away from a clinic in a single day because there were not enough volunteers on duty.
Shabbir Damani, a community pharmacist, said it had been "heartbreaking" to turn people away on Friday, but added there was no alternative.
He said: "When we don't have enough team members we have to limit the size of the clinics. Our understanding is that we're in this pandemic together, we can do it together, but we need the help and support.
"It's heartbreaking, as we have a facility. We're having to turn people away as we haven't got the manpower."
Clive Emmett, the chief executive of the Council for Voluntary Service Uttlesford in Essex, said that the charity was struggling to find volunteers for weekend sessions.
"We have a core of volunteers that have been volunteering on a Saturday on a regular basis for a long time now, but people are getting tired and have other things they want to do," he told the BBC.
There has been little sign in many areas of the new clinics which Mr Johnson promised last week would soon be "popping up like Christmas trees".
In Hull, where the vaccine uptake is lower than the national average, the city's Labour MP has complained that there were no plans for walk-in boosters.
Dame Diana Johnson said: "With the need to minimise the spread of the omicron variant ahead of Christmas, I am concerned to have it confirmed by the NHS that there are currently no walk-in clinics for Covid booster jabs planned for Hull. This does not seem right. Do they need to think again?"
Local NHS bosses later confirmed that they were "not offering walk-ins currently in Hull for booster Covid vaccinations", but added there remained "plenty of capacity within the system for booked appointments".
Government departments talk up rollout 'success'
A spokesman for the NHS said: "The NHS Covid vaccination programme, the biggest and most successful in health service history, has already delivered over 99 million jabs, including more than 17 million top-ups in England alone.
"We anticipate the patient group directions and national protocols, which allow healthcare professionals to vaccinate at scale, will soon be updated by UKHSA to reflect the new clinical advice set out last week. This will enable the programme to go even further to offer lifesaving protection."
A senior government source on Monday night stressed that ministers expected the booster rollout to speed up over the coming days and weeks, with "everyone in the NHS working hard to get as many people jabbed as quickly as we can".
A spokesman for the Department of Health and Social Care said: "Our Covid-19 vaccination programme has been a huge success. The UK has one of the highest uptake rates in the world, with more than 85 per cent of adults double jabbed so far and more than 20 million people receiving a third dose or booster.
"The Health and Social Care Secretary has accepted advice from the JCVI [Joint Committee on Vaccination and Immunisation] to extend the offer of a booster jab to all adults by the end of January 2022, which will help protect more people and further strengthen our wall of defence.
"Over the coming weeks, hundreds of military personnel, 1,500 community pharmacy sites, additional hospital hubs and pop-up sites will help the NHS deliver these vital jabs at speed."
UK coronavirus lockdown,
Vaccination,
Boris Johnson,


The ISL8011EVAL1Z board evaluates the ISL8011, an integrated FET, 1.2A synchronous buck regulator for general purpose point-of load (POL) applications. It is optimized for generating low output voltages down to 0.8V. The supply voltage range of 2.7V to 5.5V allows the use of common 3.3V or 5V supply rails and Lithium ion battery inputs. It has a guaranteed minimum output current of 1.2A and a 1.5MHz pulse-width modulation (PWM) switching frequency which allows the use of small external components.


text:
Here's how to stream the 2022 Super Bowl
Super Bowl LVI kicks off on Sunday, February 13 at 6:30pm ET/3:30pm PT, with the Los Angeles Rams facing off against the Cincinnati Bengals in Inglewood, California. The game will be aired on NBC — so if you have cable, you can just tune in. Want to stream it, instead? You've got more options to consider there.
If you have cable but want to watch on something like an iPhone or iPad, you can also stream the game live on the NBC Sports App and NBCSports.com by authenticating your credentials. This year the game will also be telecast on Telemundo, which is an American Spanish-language network owned by Comcast through NBCUniversal.
As for cord-cutters, there are several streaming services that will allow you to live stream the Super Bowl via subscriptions and select free trials. The game can be streamed through Peacock's premium tier and you can watch Peacock through Apple TV, Roku, PlayStation, Fire TV and more. Peacock Premium has two tiers, there's a $5 monthly ad-supported subscription and a $10 monthly ad-free subscription.
Another option is Hulu + Live TV, which gives users unlimited access to all NFL games. Users can add Hulu's sports package for an additional $10 per month for a total of $69.99 per month. The subscription also provides access to NFL Network, which offers year-round football content.
You can also stream the game through YouTube TV, which is Google's TV service that gives subscribers access to sports coverage, along with local and national networks. You can currently sign up for the service for $54.99 a month for the first three months.
Sling TV also offers access to NBC through its Orange and Blue packages, which cost $35 per month. The game can also be accessed through FubuTV, which is a streaming service that is primarily focused on distributing live sports. The service costs $65 per month and also offers access to MLB, NBA, NHL, MLS and more.
Another option is DirecTV, which is AT&T's streaming service that gives subscribers the option to stream a variety of TV content on their devices. You can access NBC on its $69.99 entertainment package.
Last year, the Super Bowl attracted 96.4 million viewers, making it the lowest watched Super Bowl since 2007. In terms of this year, demand-intelligence company PredictHQ estimates that the game could reach 117 million viewers. If this turns out to be the case, viewership would surpass the current most-watched Super Bowl in 2015 between the New England Patriots and Seattle Seahawks, which drew 114 million viewers.
As for the halftime show, this year's performances will feature Dr. Dre, Snoop Dogg, Eminem, Kendrick Lamar and Mary J. Blige. The Super Bowl halftime show will likely start shortly after 8pm ET/5pm PT.
Tags: Bowl Heres Stream super
Previous Soon all blockchain companies will be crypto speculators
Next 3 Ways to Be Productive Despite Uncertainty


When you can't do something you love, then I bet you have a problem. A huge one.
There are some things that, in a way, defines you. Of course, the budists may have a different approach. They may call it attachment, or ego. Me, as a western, call it life purpose.
Sometimes, life just doesn't allow you to do whatever you feel you should do. There is a type of feeling of being lost. To be different from who you are. To be somebody's else. As responsible of that as we can be, as grown adults, I sense there is not a conscient choose. It can't be. How would we choose to leave aside an important part of yourself? I mean, by our own will?
So, now, I try to catch the pieces I had of myself and try to build up myself again. And I found expression is a great deal for me. I had not many opportunities to express me in any other ways, so I found a way through writing.
I hope this text stand still here, lost in the middle of Giga and Tera bytes that are in the web. But anyway, I sware, this is my truth. I feel the read, I feel the write. I just need it to be alive.


Complete the "Dispatcher Self-Screening Questionnaire" and review the "Dispatcher Job Facts Sheet" to determine if the position is a good career match for you.
Download and complete the WARCOG employment application.
Remember to save the changes made to the document and rename the completed application.


text:
[SOLVED] News, and news sources, are critical to the way we see the world. How do we determine if a news source is credible and the information is both thorough and accurate? This assignment challenges stude – Law
by admin | Aug 22, 2022 | Law
News, and news sources, are critical to the way we see the world. How do we determine if a news source is credible and the information is both thorough and accurate? This assignment challenges students to compare online articles about the same criminal justice-related or ethics-related issue from sources that fall into loosely "liberal" and "conservative" websites and which show distinct differences in coverage. The assignment combines digital literacy (finding and identifying articles on the same topic from two discrete sources) and critical thinking (analysis of the impact that biased information may have on readers).This Narrative Portion: Part II: The Narrative is an expansion of the outline that dives further into the assignment requirements and critical analysis of the topics presented.In your Narrative paper should start with you (1) briefly explain the subject of the articles, (2) the areas of commonality, and (3) the substantive differences in their coverage. Next, you are going to expand upon those factors to critically analyze and clearly state your thoughts on the next questions. Firstly, you will (4) address the impact that reading only one of the two articles might have on the average reader. Consider whether a reader would be fully knowledgeable about the issue if they only read one. Additionally, what types of bias or results might occur if they read one article over the other? For example, would they change their support for implementing a policy or support for a ruling in a court case? You will close out the paper by (5) blending the information from the two articles together to give a complete and true explanation of the issue. You are going to present the blended information in such a way that the reader will be well and thoroughly informed after reading it. Bring your Narrative to a firm conclusion by tying together everything that you have learned throughout writing this paper (i.e., your views on ethical reporting, what you learned about the topic, picking news articles, etc.). Along with your Narrative paper you will also be turning in PDF copies of the two comparative news articles and they need to be PDFs – not links to the websites. The easiest way to do this is to Export the News Articles as PDFS and save them. You can also go to print and chose the Export as PDF option. Essentially, you will be turning in three (3) files for each part of the assignment – 1 Word Document with the assignment (Outline/Narrative) and 2 PDFs (one for each article) to their associated Dropbox by their deadline. The maximum length of the narrative version is three (3) pages. The length only applies to the body of the paper (i.e., it does not count cover page or reference page).To reiterate, the Outline and Narrative must be submitted via the iCollege Assignments Dropboxes (found under Assessments, Assignments) by the dates noted in the schedule at the end of this syllabus. A grading rubric for the assignment is on iCollege. You should also be turning in PDFs of the comparison articles for both assignments. General Notes from the Previous Assignment:Topic: The murder of George Floyd by Derek ChauvinSimilarities· The New York Times and The Federalist both account the murder on the same date and place.· The New York Times and The Federalist article aim at reconstructing the death of George Floyd.· Both articles account of the intense jury selection due to the family of George Floyd's family asserting how there is no justice without a murder conviction.Differences· The article from The Federalist, accounts for George Floyds murder as a "story of hard streets, difficult decisions, heightened tempers, and hard drugs."· The article from The Federalist, insinuates that the murder of George Floyd was caused by his paranoia of being shot in the past unlike The New York Times that accounts for Floyd's murder as the fault of Derek Chauvin.· Instead of being described by his acclimates and endearing words from his family The Federalist describes Floyd as a big man with a childlike state of mind.· The Federalist accounts the murder of George Floyd was due to a fatal heart attack due to the fentanyl and methamphetamine use. · The New York Times article reports that after Floyd's death all four of the involved officers were fired. · The Federalist article does not report that Derek Chauvin's knee was placed on George Floyd's neck.


Cardamom futures traded higher on MCX, with enlargement of portfolios tracking robust demand from physical domestic and export markets.
The contract for February delivery was trading at Rs 1560.00, up by 0.21% or Rs 3.20 from its previous closing of Rs 1556.80. The open interest of the contract stood at 140 lots.
The contract for March delivery was trading at Rs 1460.00, up by 0.53% or Rs 7.70 from its previous closing of Rs 1452.30.The open interest of the contract stood at 231 lots on MCX.


Jamie Lee Curtis recently appeared as a guest on The Graham Norton Show. She's currently doing the rounds to promote the new Halloween movie.
The original Halloween starring a young Jamie Lee Curtis, was released in 1978, so she has returned to her roots 40 years later.
In this interview Jamie Lee Curtis talks about her process for remembering what mental state she's meant to be in when filming a horror flick.
She then explains why all of the dials in Tesla cars go up to 11. Which has to do with Elon Musk being a big fan of This Is Spinal Tap.


text:
Russian Cosmonaut Speaks About Situation on ISS After Leak in Soyuz Spacecraft
© CC0
https://sputniknews.com/world/201809101067903723-russia-iss-soyuz-leak-crew/
MOSCOW (Sputnik) - Russian cosmonaut Sergei Prokopyev, who is currently at the International Space Station (ISS) showed the place where an oxygen-leaking small crack on the Russian Soyuz spacecraft, docked at the ISS, had been previously found.
"Please, do not worry, everything is fine here. We are now in the living section of the Soyuz MS-09 spacecraft where the drop in air pressure has been detected. As you can see, we can easily be here without our space suits. No one is stuffing fingers into the hole," Prokopyev said in a video that Russian state space corporation Roscosmos posted on its Twitter.
READ MORE: What We Know So Far About ISS Air Leak as Some Suspect Sabotage
Propopyev also showed the supersonic device that had helped the ISS staff to define the exact location of the crack and said that three layers of special sealer had been applied to the fracture.
"We're living peacefully and amicably, as always, the experiments are carried out in a normal mode. Our colleagues are getting ready for a new outer spacewalk, during which I will play the role of the master controller. So, our joint international expedition works in a calm and friendly atmosphere," Prokopyev said.
© NASA
ISS Leak Repaired: Internal Cabin Pressure Stabilized - NASA
The comment was made after on August 30, the ISS crew found a microfracture on a wall in the living section of the Soyuz MS-09 spacecraft, that provoked an insignificant air leak. The hole was patched up on the same day.
The special commission of Russian Energia Rocket and Space Corporation, investigating the case, reported on Monday that the hole had been made deliberately, but the perpetrators had not been established.
Russian Cosmonauts Asked to Look For Proof to Unravel Soyuz Hole Origin - Source
Energia Co. Experts Believe Hole in Soyuz Spacecraft Made Deliberately – Source
Air Leak Hole in Soyuz Spacecraft Likely Made During Construction – Sources
Russian Soyuz, Progress Spacecrafts to Be Checked After Air Leak - Source
cosmonauts, leak, ISS, Russia


text:
Q: PNP high side switching with 100 mA load
I have this circuit to detect tamper status using a switch. When the switch is pressed (ON) then GND is provided to the base of Q3 (2N3906), so that transistor will be in the saturation region and can get 12 V with 100 mA load across R20. When the switch is OFF, then a positive voltage appears on the base of Q3 & there is 0 V across R20.
Also when the switch is pressed (ON), then GND is provided to the base of Q4 (2N3904), so that transistor will be in the cutoff region and LED D7 will be off. When the switch is OFF, then a positive voltage appears on the base of Q4 & LED D7 will be ON.
I am at a learning stage, please guide me to calculate the resistor values & other suggestions with explanations so that circuit can work for a long time.

I am really sorry for the wrong text initially. Circuit diagram also updated.

A: Firstly, the "tamper" output will always be high with this circuit- R21 will cause Q3 to remain on, albeit with a bit less base current than when the switch is pressed.
2N3906 is not a great transistor if your load current is actually 100mA, as the gain plummets above about 30mA. I would suggest a 2N4403.  If you operate that with  a base current of about 10-15mA you'll get low Vce(sat).
A rule of thumb is that Ic/Ib should be around 10 to 20, with the latter more appropriate for a transistor that has an hFE of >100 at the desired current. That calls for R14 to be reduced to about 1K. R15 and R7 do more-or-less the same thing, so let's get rid of R15.
Your LED current will be in the 20mA range with a 500 ohm series resistor. I suggest trying it with at least 1K instead, maybe 2K or 4.7K is bright enough with a modern LED. To have the LED turn off when the tamper is detected without the problem mentioned, you can connect it like this:

simulate this circuit – Schematic created using CircuitLab
There's a hidden issue with this circuit in that the electrolytic cap will cause the transistor to switch very slowly, which is at bit hard on it when it's conducting 50mA with 6V across it (assuming a 12V/100mA load resistance). It should be safe enough in this case, but it is something to keep an eye on.

A:
When switch closed 100R resistor limits capacitor discharge current through switch to reduce switch wear.
When switch is closed, base of BC327 is pulled down to approx 11.3V pulling about 1.5mA out of the transistor's base. This is sufficient base current to cater for your 100mA load. Minimum hFE of BC327 is 100 which is higher than the 2N3906's minimum hFE. Q1 is configured in common emitter mode.
When switch is closed, base of BC548 is pulled almost to ground switching off the LED. BC548 is configured in emitter follower mode.
When switch is opened, base of BC327 is pulled up to about 11.9V switching off the BC327 and enabling its collector to fall to 0V. Simmultaneously R2 & R4 now supply base current to Q2 switching on the LED.

A: With R20 at 2k, there is no way you are going to draw 100 mA.
Assuming that 100 mA is the desired collector current, if you want the load voltage to be within about 1 volt of the supply voltage, the gain of the transistor should be assumed to be about 10. With a very low Vce the transistor is in saturation, and gain is low.
This means that you need a base current of about 10 mA. In turn, this means that R14 should be about 1 k. For what it's worth, some texts suggest assuming a saturation gain of 20, in which case 1.8 k will work just fine.
It really depends on how conservative a design you want to make, and how low you want Vce to be.

redpajama_set_name: RedPajamaStackExchange


With a mass range of afforable sanitaryware, from traditional to modern and sleek we can cover all tastes.
Most ranges offer comprehensive choice of fitting to adapt to all situations.
The range also includes cloakroom basins, inset,semi-recessed and counter mounted basins.
For the less able we can arrange for high level pans both close-coupled and low level.
Basin and Pedestal combo range.


This video that I found is so true to our Master Key Mastermind beliefs; "you persist until you succeed" (Og Mandino) failure is not an option in the Alliance of Masterminds. MKMMA – Master Key Mastermind Alliance is a Power Mind Set for anyone.
Anyone can participate from around the Globe and when You put your mind to it, Great things happen.
I have faced many obstacles since I received a scholarship for this key life experience, however, I am strong enough to pull myself up and move on and forward. Never has any class or motivational speaker or religion helped me to help myself in my life as much as MKMMA Experience.
I am a winner because failure is not an option for me.
Start something then finish it!
It is impossible to fail! You are a winner!!
You are so right. This is an amazing educational experience! So happy to be sharing it with you … so happy that you help bring out my better.
When you persist, you win! Keep up the good work, Yvette.