Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/pic_if.m
#- | #- | ||||
# Copyright (c) 2012 Jakub Wojciech Klama <jceel@FreeBSD.org> | # Copyright (c) 2015-2016 Svatopluk Kraus | ||||
# Copyright (c) 2015 Svatopluk Kraus | # Copyright (c) 2015-2016 Michal Meloun | ||||
# Copyright (c) 2015 Michal Meloun | |||||
# All rights reserved. | # All rights reserved. | ||||
# | # | ||||
# Redistribution and use in source and binary forms, with or without | # Redistribution and use in source and binary forms, with or without | ||||
# modification, are permitted provided that the following conditions | # modification, are permitted provided that the following conditions | ||||
# are met: | # are met: | ||||
# 1. Redistributions of source code must retain the above copyright | # 1. Redistributions of source code must retain the above copyright | ||||
# notice, this list of conditions and the following disclaimer. | # notice, this list of conditions and the following disclaimer. | ||||
# 2. Redistributions in binary form must reproduce the above copyright | # 2. Redistributions in binary form must reproduce the above copyright | ||||
Show All 12 Lines | |||||
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||||
# SUCH DAMAGE. | # SUCH DAMAGE. | ||||
# | # | ||||
# $FreeBSD$ | # $FreeBSD$ | ||||
# | # | ||||
#include <sys/bus.h> | #include <sys/bus.h> | ||||
#include <sys/cpuset.h> | #include <sys/cpuset.h> | ||||
#include <machine/frame.h> | #include <sys/resource.h> | ||||
#include <machine/intr.h> | #include <sys/intr.h> | ||||
INTERFACE pic; | INTERFACE pic; | ||||
CODE { | CODE { | ||||
static int null_pic_bind(device_t dev, struct intr_irqsrc *isrc) | static int | ||||
dflt_pic_bind_intr(device_t dev, struct intr_irqsrc *isrc) | |||||
{ | { | ||||
return (EOPNOTSUPP); | return (EOPNOTSUPP); | ||||
} | } | ||||
static void null_pic_disable_intr(device_t dev, struct intr_irqsrc *isrc) | static int | ||||
null_pic_alloc_intr(device_t dev, struct intr_irqsrc *isrc, | |||||
struct resource *res, struct intr_map_data *data) | |||||
{ | { | ||||
return; | |||||
return (0); | |||||
} | } | ||||
static void null_pic_enable_intr(device_t dev, struct intr_irqsrc *isrc) | static int | ||||
null_pic_release_intr(device_t dev, struct intr_irqsrc *isrc, | |||||
struct resource *res, struct intr_map_data *data) | |||||
{ | { | ||||
return; | |||||
return (0); | |||||
} | } | ||||
static void null_pic_init_secondary(device_t dev) | static int | ||||
null_pic_setup_intr(device_t dev, struct intr_irqsrc *isrc, | |||||
struct resource *res, struct intr_map_data *data) | |||||
{ | { | ||||
return; | |||||
return (0); | |||||
} | } | ||||
static void null_pic_ipi_send(device_t dev, cpuset_t cpus, u_int ipi) | static int | ||||
null_pic_teardown_intr(device_t dev, struct intr_irqsrc *isrc, | |||||
struct resource *res, struct intr_map_data *data) | |||||
{ | { | ||||
return; | |||||
return (0); | |||||
} | } | ||||
static void | |||||
null_pic_init_secondary(device_t dev) | |||||
{ | |||||
} | |||||
static void | |||||
null_pic_ipi_send(device_t dev, cpuset_t cpus, u_int ipi) | |||||
{ | |||||
} | |||||
static int | static int | ||||
dflt_pic_ipi_setup(device_t dev, u_int ipi, struct intr_irqsrc *isrc) | dflt_pic_ipi_setup(device_t dev, u_int ipi, struct intr_irqsrc *isrc) | ||||
{ | { | ||||
return (EOPNOTSUPP); | return (EOPNOTSUPP); | ||||
} | } | ||||
}; | }; | ||||
METHOD int register { | METHOD int alloc_intr { | ||||
device_t dev; | device_t dev; | ||||
struct intr_irqsrc *isrc; | struct intr_irqsrc *isrc; | ||||
boolean_t *is_percpu; | struct resource *res; | ||||
}; | struct intr_map_data *data; | ||||
} DEFAULT null_pic_alloc_intr; | |||||
METHOD int unregister { | METHOD int bind_intr { | ||||
device_t dev; | device_t dev; | ||||
struct intr_irqsrc *isrc; | struct intr_irqsrc *isrc; | ||||
}; | } DEFAULT dflt_pic_bind_intr; | ||||
METHOD void disable_intr { | METHOD void disable_intr { | ||||
device_t dev; | device_t dev; | ||||
struct intr_irqsrc *isrc; | struct intr_irqsrc *isrc; | ||||
} DEFAULT null_pic_disable_intr; | }; | ||||
METHOD void disable_source { | METHOD void enable_intr { | ||||
device_t dev; | device_t dev; | ||||
struct intr_irqsrc *isrc; | struct intr_irqsrc *isrc; | ||||
}; | }; | ||||
METHOD void enable_source { | METHOD int map_intr { | ||||
device_t dev; | device_t dev; | ||||
struct intr_irqsrc *isrc; | struct intr_map_data *data; | ||||
struct intr_irqsrc **isrcp; | |||||
}; | }; | ||||
METHOD void enable_intr { | METHOD int release_intr { | ||||
device_t dev; | device_t dev; | ||||
struct intr_irqsrc *isrc; | struct intr_irqsrc *isrc; | ||||
} DEFAULT null_pic_enable_intr; | struct resource *res; | ||||
struct intr_map_data *data; | |||||
} DEFAULT null_pic_release_intr; | |||||
METHOD void pre_ithread { | METHOD int setup_intr { | ||||
device_t dev; | device_t dev; | ||||
struct intr_irqsrc *isrc; | struct intr_irqsrc *isrc; | ||||
}; | struct resource *res; | ||||
struct intr_map_data *data; | |||||
} DEFAULT null_pic_setup_intr; | |||||
METHOD void post_ithread { | METHOD int teardown_intr { | ||||
device_t dev; | device_t dev; | ||||
struct intr_irqsrc *isrc; | struct intr_irqsrc *isrc; | ||||
}; | struct resource *res; | ||||
struct intr_map_data *data; | |||||
} DEFAULT null_pic_teardown_intr; | |||||
METHOD void post_filter { | METHOD void post_filter { | ||||
device_t dev; | device_t dev; | ||||
struct intr_irqsrc *isrc; | struct intr_irqsrc *isrc; | ||||
}; | }; | ||||
METHOD int bind { | METHOD void post_ithread { | ||||
device_t dev; | device_t dev; | ||||
struct intr_irqsrc *isrc; | struct intr_irqsrc *isrc; | ||||
} DEFAULT null_pic_bind; | }; | ||||
METHOD void pre_ithread { | |||||
device_t dev; | |||||
struct intr_irqsrc *isrc; | |||||
}; | |||||
METHOD void init_secondary { | METHOD void init_secondary { | ||||
device_t dev; | device_t dev; | ||||
} DEFAULT null_pic_init_secondary; | } DEFAULT null_pic_init_secondary; | ||||
METHOD void ipi_send { | METHOD void ipi_send { | ||||
device_t dev; | device_t dev; | ||||
struct intr_irqsrc *isrc; | struct intr_irqsrc *isrc; | ||||
cpuset_t cpus; | cpuset_t cpus; | ||||
} DEFAULT null_pic_ipi_send; | } DEFAULT null_pic_ipi_send; | ||||
METHOD int ipi_setup { | METHOD int ipi_setup { | ||||
device_t dev; | device_t dev; | ||||
u_int ipi; | u_int ipi; | ||||
struct intr_irqsrc *isrc; | struct intr_irqsrc **isrcp; | ||||
} DEFAULT dflt_pic_ipi_setup; | } DEFAULT dflt_pic_ipi_setup; |